0

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

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);
    }
}

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

4

1 回答 1

1

不,它不会添加大量的空格,但会将fgets换行符留在缓冲区中。所以你通常有一个尾随空格字符。修复它

int len = strlen(line);
if (line[len-1] == '\n') {
    line[len-1] = 0;
}
于 2012-09-22T23:26:34.220 回答