gpt4 book ai didi

c - 是/否不起作用

转载 作者:行者123 更新时间:2023-11-30 21:43:47 25 4
gpt4 key购买 nike

do {
p++;
printf("Enter your name: ");
scanf("%s", &string);
fprintf(fw, "%d\n%s\n",p, string);
printf("Enter your telephone number: ");
scanf("%d",&cislo);
fprintf(fw, "%d\n",cislo);
printf("If u want to add more datas press Y otherwise press N ");
c = getchar();
while (getchar() != '\n')
;
if ( c == 'Y')
k++;
else
printf("You decided not to continue.");
} while (p < k);

你好,代码的结尾似乎不起作用,因为当我输入 Y 时,它显示“你决定不继续”,这是废话,因为它应该将 k 加 1 并再执行一次(p nad k 是在程序开始,p = 0; k = 1; 你能告诉我解决方案吗?

最佳答案

在读取其他内容之前,您应该清空 stdin 缓冲区。

void emptyBuffer() {
char c = 'a';
while (c != '\n' && c != EOF) {
c = getchar();
}

return;
}

该函数清空标准输入缓冲区。

    printf("Enter your name: ");
scanf("%s", &string);
emptyBuffer();

fprintf(fw, "%d\n%s\n",p, string);
printf("Enter your telephone number: ");
scanf("%d",&cislo);
emptyBuffer();

fprintf(fw, "%d\n",cislo);
printf("If u want to add more datas press Y otherwise press N ");
c = getchar();

因为当您使用 getchar() 时,您可能会得到上一个问题 (/answer) 的最后一个 '\n'

顺便说一句(根据之前的评论)你应该使用:

   if ( c == 'Y' || c == 'y' )

这对用户更友好:)

关于c - 是/否不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31693973/

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