Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C程序在接受输入之前退出_C_Text Files - Fatal编程技术网

C程序在接受输入之前退出

C程序在接受输入之前退出,c,text-files,C,Text Files,我这里有一个程序,允许用户在其他功能中附加一个文本文件,但为了保持简单,我刚刚展示了2。问题是,当用户选择选项1时,“附加”和“输入一个句子:”结果很好,但程序在那一刻退出…也就是说,在用户可以输入句子之前,它退出。我该如何解决这个问题? (我用scanf&printf语句尝试了一个更简单的示例,但在这里我使用的是一个文件,无法获得所需的输入!) 当用户输入一个选项时,他们可能会在您开始处理他们的选择之前按enter键。然后,使用gets函数会导致程序将“\n”解释为输入。您可以使用scanf代

我这里有一个程序,允许用户在其他功能中附加一个文本文件,但为了保持简单,我刚刚展示了2。问题是,当用户选择选项1时,“附加”和“输入一个句子:”结果很好,但程序在那一刻退出…也就是说,在用户可以输入句子之前,它退出。我该如何解决这个问题? (我用scanf&printf语句尝试了一个更简单的示例,但在这里我使用的是一个文件,无法获得所需的输入!)


当用户输入一个选项时,他们可能会在您开始处理他们的选择之前按enter键。然后,使用gets函数会导致程序将“\n”解释为输入。您可以使用scanf代替格式字符串“%s”来读取缓冲区而不是gets

...
printf("Enter a sentence:\n");
scanf("%s", c);
fprintf(fp,"%s", c);
...
或者,如果您坚持保留GET,一个混乱的解决方案可能是在调用scanf进行选择之后立即使用getc,或者在该scanf调用中读取额外的字符以处理“\n”

...
scanf ("%d%c", &choice);
getc();
...

您的scanf正在将\n保留在缓冲区中,可能会将其替换为getc,将选项更改为char?此问题的某些方面以前已被问过上千次,请在提问之前进行一些研究。另外,请不要使用gets,该函数在过去17年中一直被标记为过时。为什么你要从超过17年的资料中学习C?
...
scanf ("%d%c", &choice);
getc();
...