gpt4 book ai didi

c - C 程序的意外输出

转载 作者:行者123 更新时间:2023-11-30 20:18:55 30 4
gpt4 key购买 nike

感谢您之前的帮助..在这里,我遇到了一个面临相同输出的新问题。 scanf() 不起作用。我在其中使用宏,这个时间格式是正确的哈哈..请看一下并告诉我我在这里做错了什么。我试图将两个字符作为输入并测试它们是否是“大写与否”或“小写与否”。我的程序扫描 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;
}

这是我的输出

最佳答案

您可以使用flushall()函数清除与输入流关联的所有缓冲区,并写入与输出流关联的所有缓冲区。

Flushall() 不是 C,而是供应商特定的扩展。

另一种选择是在 %c 之前使用空格

<小时/>

示例

char ch;
scanf(" %c", &ch);

另一个问题是宏的使用。在宏定义中,您使用与 main() 的局部变量 xy 相同的名称

关于c - C 程序的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52587229/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com