gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:38:39 24 4
gpt4 key购买 nike

我这里有一个程序,允许用户在其他功能中附加文本文件,但为了简单起见,我只显示了 2 个。问题是,当用户选择时,说选项“否”。 1,“附加”和“输入句子:”效果很好,但程序就退出了……也就是说,在用户输入句子之前,它就退出了。我该如何解决 ?(我尝试了一个使用 scanf 和 printf 语句的更简单的示例,该示例可以工作,但在这里我正在处理一个文件,并且无法获取所需的输入!)

int main()
{
int choice;
char c[2000];
FILE *fp;

printf("Welcome to my Text Editor!\n");
printf("Enter the letter for the operation that you would like to carry out on the file\n");
printf("1 - Append a word to end of file\n");
printf("2 - Search for a word in the file\n");

scanf ("%d", &choice);

if (choice == 1)
{
printf ("Append\n");
fp=fopen("C:/Users/Asim/Desktop/random.txt","a");
if(fp==NULL){
printf("Error!");
exit(1);
}
printf("Enter a sentence:\n");
gets(c);
fprintf(fp,"%s",c);
fclose(fp);
}
else if (choice == 2)
{
printf ("Search");
}
else
{
printf ("Invalid choice!");
}
}

最佳答案

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

...
printf("Enter a sentence:\n");
scanf("%s", c);
fprintf(fp,"%s", c);
...

或者,如果您坚持保留 gets,一个困惑的解决方案可能是在调用 scanf 进行选择之后立即使用 getc,或者在该 scanf 调用中读取额外的字符,以处理 '\n'。

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

关于C 程序在接受输入之前退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37743386/

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