我这里有一个程序,允许用户在其他功能中附加文本文件,但我只是显示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!");
}
}
答案 0 :(得分:0)
当用户输入一个选项时,可能会在您开始处理他们的选择之前按Enter键。然后,您对gets函数的使用会导致您的程序解释为' \ n'作为输入。您可以使用scanf代替格式字符串"%s"读入缓冲区而不是获取缓冲区。
...
printf("Enter a sentence:\n");
scanf("%s", c);
fprintf(fp,"%s", c);
...
或者,如果你坚持保持获取,一个混乱的解决方案可能是在你选择scanf之后立即使用getc,或者在scanf调用中读取额外的char,以处理' \ n'。
...
scanf ("%d%c", &choice);
getc();
...