c - 新手,无法使用 scanf() 解析输入,包括简单代码

标签 c

我的代码有问题。它应该解析像这样的输入

1 34 a 2 -5 67 c

3455 124 -123 111 s 123 3544 f g

或任何其他字符(长度为 1)和数字的组合。这是我的代码:

char oper = 0;
int number = 0;
do{
    if(scanf("%d", &number)==1)
    {
        ...
    }
    else
    {
        scanf("%c", &oper);
        if(oper == 'g')
        {
            ...
        }
        if(oper == 'h')
        {
            ...
        }
        ... 
    } 
} while(oper != '\n');

当它到达一个字符时,scanf("%c", &oper);将“\n”复制到oper中,我希望它是“a”或“s”

出了什么问题,我该如何解决?

最佳答案

scanf("%d"...) 将扫描过去的空格(空格、制表符、换行符)以获取数字。

scanf("%c"...) 将读取下一个字符。

您需要找到一种方法来扫描空白区域。您看过 s​​canf 格式的定义吗?

Wikipedia与普通的手册页相比,似乎很有帮助。

关于c - 新手,无法使用 scanf() 解析输入,包括简单代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9809197/

相关文章:

c - scanf 之后 fgets 不起作用

将指针数组转换为双指针

c - strtok - 如何避免换行并放入字符串数组?

c - C 中的结构和文件处理

c - Monodevelop 和过剩问题

在C中连接两个字符串

c - C : is it guaranteed to return 0/1? 中的双重否定

未声明结构的 C typedef 不会抛出任何编译错误

c - 当我尝试用列表语言 C 编写时出错

c - 如何使用 WatCom 生成带有声明的段偏移量的 RAW BIN