繁体   English   中英

是什么导致我的 C 程序中出现此错误(分段错误(核心转储))?

[英]What is causing this error in my C program (Segmentation fault (core dumped))?

我正在尝试创建一个小程序(我仍然是初学者),它将根据在作为参数输入的一段文本中找到字母(大写或小写)的频率来创建直方图。

不幸的是,由于某种原因,它在执行a.out文件时不断给我一个Segmentation fault (core dumped)错误。

#include <unistd.h>

void    ft_putchar(char c)
{
    write(1, &c, 1);
}

void    letter_count(char *str)
{
    int     i;
    int     count;
    char    letter;

    i = 0;
    count = 0;
    letter = 'a';
    while (str[i])
    {
        if (str[i] >= 'A' && str[i] <= 'Z')
            str[i] += 32;
        i++;
    }
    i = 0;
    while (letter <= 'z')
    {
        while (str[i])
            if (str[i++] == letter)
                count++;
        ft_putchar(letter);
        ft_putchar(' ');
        while (count-- > 0)
            ft_putchar('|');
        ft_putchar('\n');
        i = 0;
        count = 0;
        ++letter;
    }
}

int main(int argc, char **argv)
{
    if (argc == 2)
        letter_count(argv[2]);
    else
        write(1, "Error\n", 6);
    return (0);
}
if (argc == 2)
    letter_count(argv[2]);

是错的。 如果argc为 2,则表示有两个参数,即argv[0]argv[1]

所以试试

    letter_count(argv[1]);

顺便说一句:当argc为 2 时, argv[2]为 NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM