gpt4 book ai didi

c - 使用 C 读取输入

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:57 25 4
gpt4 key购买 nike

我正在 cygwin 环境中开发一个简单的编译器,使用 flex 和 bison 生成 C 代码作为输出,我已经生成了一个代码序列,用于读取两个整数后跟一个字符。

虽然我认为我知道基本的 c 代码,但我在下面的代码中遇到了一个问题,我输入了两个整数,但它在读取整数后从不询问字符!

处理这样生成代码的最佳方法是什么,我应该总是在执行扫描或 getchar() 之前清除字符缓冲区,还是我只是在某处犯了错误!!!

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {

int a = 0;
int b = 0;
char f = '\0';

scanf("%d",&a);

scanf("%d",&b);

f = getchar();
fflush( stdin );

return EXIT_SUCCESS;

}

最佳答案

如果你想在新的一行读取输入的每一部分,改变你的 scanf 格式字符串,让它使用 '\n',因为在时刻 f = '\n'。 IE。使用 "%d\n" 而不是 "%d"

然后您可以打印这些值以确保 (printf("a: %d, b: %d, f: %c\n", a, b, f);)

$ ./test
2
4
b
a: 2, b: 4, f: b

另一种方法是将两个 scanf 语句和 getchar 替换为单个 scanf 语句:scanf("% d\n%d\n%c", &a, &b, &f);.

关于c - 使用 C 读取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7953459/

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