首页 > 解决方案 > 当用户不提供输入时,我收到“分段错误:11”。当用户确实提供输入时,它工作正常。我怎样才能解决这个问题?

问题描述

它的一个while (1)循环不断地询问用户输入直到终止。我希望它询问用户输入,如果在按下回车时没有输入,它应该再次要求输入。

int main(int argc, char* argv[]) {
   char input[100];
   while (1) {
      fgets(input, 40, stdin);
   }
} 

char input[100];我也尝试过初始化输入

char *input = (char *)malloc(10*sizeof(char));

但这无济于事。

当用户提供输入时它工作正常。我怎样才能解决这个问题?

标签: cfgets

解决方案


从我读到的这就是我认为你的程序所做的

#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(...))目的是


推荐阅读