我正在做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;
}
我找不到一个例子,需要澄清如何解决问题。
答案 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);
为避免这种问题,我建议两件事:
gcc支持关于此问题的警告-Wmisleading-indentation
。
对于更多类似的问题,请阅读Andrew Koenig撰写的"C Traps And Pitaflls"。