逐行读取字典文件需要带有大量空格的字符串

时间:2012-09-22 23:25:12

标签: c file-io strcmp

我正在逐行读取字典文件,然后将每行与字符串进行比较。我的问题是我不知道如何动态分配每行的字符串长度来删除空格。在你看到我的代码后我会解释这个:

FILE *f;
f = fopen("/usr/share/dict/words", "r");
if (f != NULL)
{
    // maximum size of line, keep it at 128 just in case
    char line[128] = "";

    // run through every line of file
    while (fgets(line, sizeof(line), f))
    {
        if (strcmp("hello", line) == 0)
            printf("The string is %s!", line);
    }
}

所以我必须初始化“line”变量以获取任何行的最大长度。只是如果该行小于128的值,它只会在末尾添加空格,从而导致无效的比较。我该如何改变?

1 个答案:

答案 0 :(得分:1)

不,它不会增加大量的空白,fgets会将新行留在缓冲区中。所以你通常有一个尾随空白字符。

修复它
int len = strlen(line);
if (line[len-1] == '\n') {
    line[len-1] = 0;
}