一段时间(1)循环不断询问用户输入,直到终止。我希望它向用户询问输入,如果在按Enter键时未提供任何输入,它应该再次询问输入。我已经将输入初始化为char input [100];我还尝试做“ char * input =(char *)malloc(10 * sizeof(char));”但这无济于事。
根据我的阅读,这就是我认为您的程序所做的
#include <stdio.h>
int main(int argc, char* argv[]) {
char input[100];
while (1) {
char* x=fgets(input, 40, stdin);
printf("Hello%c\n",*x);
}
}
来自fgets的手册页
返回值
[
fgets()
成功返回s,错误显示NULL
或在未读取任何字符的情况下发生文件结尾时返回。
[fgets()
遇到文件结尾时,它返回一个空指针,如果您尝试跟随它,将会出现分段错误。
您应该做的是检查返回值
#include <stdio.h>
int main(int argc, char* argv[]) {
char input[100];
char* x;
while (x=fgets(input, 40, stdin)) {
printf("Hello%x\n",x);
}
}
请注意while (x=fgets(...))
中的分配是预期的