C:当用户不提供输入时,我得到“细分错误:11”。当用户确实提供输入时,它工作正常。我该如何解决?

问题描述 投票:-4回答:1

一段时间(1)循环不断询问用户输入,直到终止。我希望它向用户询问输入,如果在按Enter键时未提供任何输入,它应该再次询问输入。我已经将输入初始化为char input [100];我还尝试做“ char * input =(char *)malloc(10 * sizeof(char));”但这无济于事。

c memory memory-management memory-leaks
1个回答
0
投票

根据我的阅读,这就是我认为您的程序所做的

#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(...))中的分配是预期的

© www.soinside.com 2019 - 2024. All rights reserved.