我正在逐行读取字典文件,然后将每行与字符串进行比较。我的问题是我不知道如何动态分配每行的字符串长度来删除空格。在你看到我的代码后我会解释这个:
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的值,它只会在末尾添加空格,从而导致无效的比较。我该如何改变?
答案 0 :(得分:1)
不,它不会增加大量的空白,fgets
会将新行留在缓冲区中。所以你通常有一个尾随空白字符。
int len = strlen(line);
if (line[len-1] == '\n') {
line[len-1] = 0;
}