#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUF_SIZE 1024
int main ()
{
char buffer[BUF_SIZE];
int contentSize = 1;
char* content = (char*)malloc(sizeof(char) * BUF_SIZE);
content[0] = '\0';
while(fgets(buffer, BUF_SIZE, stdin))
{
contentSize = contentSize + strlen(buffer);
content = (char*)realloc(content, contentSize);
strcat(content, buffer);
}
return 0;
}
我正在尝试读取用户输入的所有内容(甚至是空白字符),我非常接近让它正常工作,但循环永远不会结束。 fgets()
一直要求更多输入,请问我该如何解决。
最佳答案
fgets()
返回指向您传递给它的缓冲区的指针(最好不是 NULL
指针),直到它无法从文件中读取更多行。
当然,如果从标准输入读取,它总是会等待另一行,所以你必须显式地发送一个 EOF 到终端,以便它报告文件结束。您可以按 <ctrl> + <D>
来完成,例如。
关于c - 为什么这个 fgets() 循环永远不会结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18681873/