感谢您的帮助。 在这里,我面临着一个面对相同输出的新问题。 scanf()无法正常工作。我在其中使用MACRO,并且此时间格式是正确的LOL。 请看看并告诉我我在这里做错了什么。 我正在尝试以两个字符作为输入并测试它们是“大写还是小写”还是“小写还是小写”。 我的程序扫描ch1,但不扫描ch2; 我尝试使用“ fflush(stdin);”刷新输入但还是一样 当我打印ch2的值以查看它在考虑什么时,它显示“ 10”,这是我尝试刷新输入但仍保持相同输出的地方。 所以请看一下,并告诉我我的错误。 我会非常感激。
#include <stdio.h>
#define UPPERCASE(x) {\
if(x>=65 && x<=90)\
printf("Uppercase letter\n");\
else printf("not Uppercase\n");}
#define LOWERCASE(x) {\
if(x>=97 && x<=122)\
printf("LOWERCASE LETTER\n");\
else printf("not lowercase\n");}
#define BIGGER(x,y) { \
if(x>y)\
printf("%d is biger\n",x);\
else printf("%d is bigger\n",y);}
int main()
{
char ch1,ch2;
int x,y;
printf("enter a UPPERCASE LETTER\n");
scanf("%c",&ch1);
UPPERCASE(ch1);
printf("enter a LOWERCASE LETTER \n");
fflush(stdin);
scanf("%c",&ch2);
LOWERCASE(ch2);
printf("enter two numbers\n");
scanf("%d%d",&x,&y);
BIGGER(x,y);
return 0;
}
这是我的输出
答案 0 :(得分:1)
您可以使用flushall()
函数清除与输入流关联的所有缓冲区,并写入与输出流关联的所有缓冲区。
Flushall()
不是C,而是供应商特定的扩展名。
或
其他选择是在%c
之前使用空格
示例
char ch;
scanf(" %c", &ch);
另一个问题是使用宏。在宏定义内部,您使用与main()的局部变量x
和y
相同的名称