gpt4 book ai didi

c - do while循环中的fprintf只在文件C中写入一行

转载 作者:行者123 更新时间:2023-11-30 18:38:28 25 4
gpt4 key购买 nike

我不知道为什么它只在我的文件中写入一行

void foo()
{
int ID;
char answer;
FILE *input = fopen("Dane.txt", "w");

do
{
printf("Give ID: ");
scanf("%d",&ID);
fprintf(input, "%d\n", ID);
printf("Exit? y/n ");
scanf("%s", &answer);
fflush(NULL);

}
while (answer != 'n');

fclose(input);
}

输出(在文件中)只是我在控制台上写入的第一个 ID 号。但其他人在哪里?

编辑:好的,我明白了。错误出现在 char answer 中,应该是 char answer[2],结束 while 应该是 while(answer[0] != ...)。在此之前,程序只读取一个字符——行尾。当我打例如“n ENTER”只需要输入即可。现在它从选项卡中取出第一个字符,即“n”。谢谢大家的帮助

最佳答案

你犯了一些逻辑错误。你问的是退出还是退出。如果用户不想退出,那么他可以按n。因此,要继续循环,答案应该等于n,对吗?

程序的修改版本:

void foo()
{
int ID;
char answer;
FILE *input = fopen("Dane.txt", "w");

do
{
printf("Give ID: ");
scanf("%d",&ID);
fprintf(input, "%d\n", ID);
printf("Exit? y/n ");
scanf(" %c", &answer);
fflush(NULL);

}
while (answer == 'n');

fclose(input);
}

关于c - do while循环中的fprintf只在文件C中写入一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33861464/

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