丢弃C中的字符?

时间:2015-11-11 01:52:19

标签: c

我正在做C简介,我需要编写一个程序,提示用户输入字符,等号和整数。我需要使用getchar()直到'='然后scanf()为整数。然后程序应该只将整数输出回用户。

现在它为每个字符输入打印出不必要的代码,然后在最后输出正确的整数。这是我的代码:

#include <stdio.h> 
#define EQUAL '=' 
int main(void)
{ 
    char ch;
    int integer = 0;

    printf("Enter some text, an equal sign and an integer:\n");
    while ((ch = getchar())!= '\n') //while not end of line
    {
        if (ch == EQUAL){
            scanf("%d", &integer);
        }
        printf("The integer you entered is: %d\n", integer);
    }

return 0;  
}  

我找不到一个例子,需要澄清如何解决问题。

1 个答案:

答案 0 :(得分:3)

你在C中遇到了问题。问题在于:

if( ch == EQUAL )
    scanf("%d", &integer);
    printf("The integer you entered is %d\n", integer);
没有大括号的

if将只包含其后的单个语句。那段代码就是这样的:

if( ch == EQUAL ) {
    scanf("%d", &integer);
}
printf("The integer you entered is %d\n", integer);

为避免这种问题,我建议两件事:

  • 始终正确缩进代码。
  • 切勿在没有大括号的情况下使用if,else或while。

gcc支持关于此问题的警告-Wmisleading-indentation

对于更多类似的问题,请阅读Andrew Koenig撰写的"C Traps And Pitaflls"