我写了以下简单的程序。它存在一个问题,因为程序只返回最后一行。我无法弄清楚为什么会这样。有人请帮助我理解吗?
int main(int argc, char *argv[]) {
char line[200];
int i=0, k;
while(fgets(line, sizeof(line),stdin)){
i++;
}
for(k=0; k<i; k++){
makeLower(line);
printf("%s", line);
}
return 0;
}
答案 0 :(得分:5)
替换
while(fgets(line, sizeof(line),stdin)){
i++;
}
for(k=0; k<i; k++){
makeLower(line);
printf("%s", line);
}
与
while(fgets(line, sizeof(line),stdin))
{
makeLower(line);
printf("%s", line);
}
或者,如果您想在输入之后打印所有行...
char all_lines[200][200]; // 200 different strings with 200 chars max in each
int line_count;
for(line_count = 0; fgets(all_lines[line_count], 200, stdin); line_count++) {};
for(i = 0; i < line_count; i++)
{
makeLower(all_lines[i]);
printf("%s",all_lines[i]);
};