【问题标题】:unable to compare more than one character无法比较多个字符
【发布时间】:2013-01-11 04:09:09
【问题描述】:

我写了两个程序。在第一个中,我没有使用 getchar 从键盘获取字符,在这种情况下,编译完全缺少第二个 scanf。所以为了克服这个问题,我使用了 getchar。在这种情况下,我可以成功提供输入,但没有进行比较。虽然我将输入作为“d”而“d”输出只是“再见”。

#include<stdio.h>
main(){
    char c,f;
    printf("e");
    scanf("%c",&c);
    printf("one more");
    scanf("%c",&f);
    if(c=='d'&&f=='d')
        printf("hi");
    else
        printf("bye");

}

使用 getchar

#include<stdio.h>
 main(){
    char c,f;
    printf("e");
    scanf("%c",&c);
    printf("one more");
    scanf("%c",&f);
    getchar();
    if(c=='d'&&f=='d')
        printf("hi");
    else
        printf("bye");

}

【问题讨论】:

  • 这里我输入了 d 和 d ,因为这个输出必须是 hi 但它是 bye

标签: c char scanf getchar


【解决方案1】:

新行字符将保留在标准输入中,因为scanf("%c") 不会使用它。这意味着第二个 scanf() 读取换行符,而不是下一个输入。更改为 scanf(" %c") 将是一个解决方案,它将跳过前导空格。

【讨论】:

  • 最好在转换前跳过空格。对于 "%c\n" 格式,scanf 需要在返回之前找到下一个非空白字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多