gpt4 book ai didi

c - 当用户不提供输入时,我得到 "Segmentation fault: 11"。当用户提供输入时,它可以正常工作。我怎样才能解决这个问题?

转载 作者:行者123 更新时间:2023-11-30 21:22:16 24 4
gpt4 key购买 nike

它是一个while (1)循环,不断要求用户输入直到终止。我希望它要求用户输入,如果按 Enter 后没有输入,它应该再次要求输入。

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));

但这没有帮助。

当用户提供输入时,它可以正常工作。我该如何解决这个问题?

最佳答案

从我读到的内容来看,我认为你的程序是这样做的

#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 的手册页

RETURN VALUE

fgets() returns s on success, and NULL on error or when end of file occurs while no characters have been read.

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(...)) 中的赋值是有意的

关于c - 当用户不提供输入时,我得到 "Segmentation fault: 11"。当用户提供输入时,它可以正常工作。我怎样才能解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58228224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com