本scanf声明不适用于';t请求任何输入,if-else梯形图语句将被跳过。为什么会这样?
此代码用于请求用户输入整数,然后确认是否为输入,如果回答为“是”,则显示是正输入还是负输入本scanf声明不适用于';t请求任何输入,if-else梯形图语句将被跳过。为什么会这样?,c,scanf,C,Scanf,此代码用于请求用户输入整数,然后确认是否为输入,如果回答为“是”,则显示是正输入还是负输入 #include<stdio.h> int main() { int s; printf("Enter an integer:"); scanf("%d", &s); printf("So, you entered %d\n", s); printf("Is that corr
#include<stdio.h>
int main()
{
int s;
printf("Enter an integer:");
scanf("%d", &s);
printf("So, you entered %d\n", s);
printf("Is that correct? (y/n)\n");
char chr;
scanf("%c", &chr);
if(chr=='y')
{
if (s<0)
{
printf("\n%d is a negative number.\n", s);
}
else if(s==0)
{
printf("\nThe number which you entered is Zero\n");
}
else
{
printf("\n%d is a positive number\n", s);
}
}
else if(chr=='n')
{
printf("\nSorry, for that. Please re-execute this program.\n");
}
else
{
printf("\nEnter the write keyword! Re-execute this program.\n");
}
return 0;
}
#包括
int main()
{
int-s;
printf(“输入一个整数:”);
scanf(“%d”和“&s”);
printf(“因此,您输入了%d\n”,s);
printf(“正确吗?(是/否)\n”);
char-chr;
scanf(“%c”、&chr);
如果(chr=='y')
{
如果(s它正在读取您按ENTER键时生成的换行符(ASCII 10)。您可以使用
scanf(“%c”和&chr);
空间会导致空白(包括LF)被跳过。这里,你甚至不用使用SCANF,考虑使用或.<代码> SCANF(“%C”)正在从“代码> STDIN <代码>下读取下一个字符:<代码> SCANF(“%D”)左。在这种情况下,它是换行符。,这应该是“对的”吗?最好指定正确的输入。@ikegami是的,我在发布后看到了“write关键字”。但它不会导致任何语法错误。嗯?你没有收到任何语法错误这确实解决了问题,但为什么会发生这种情况?在int
s%c
中没有清除前导空格自动导致您可能正在尝试读取这些字符。%d
遇到空白将有两个选项:失败或忽略空白。因此,它被设计为忽略空白,这意味着如果在%c
之前没有给出空白,它将读取字符的ASCII值,而不是字符本身?计算机不会现在关于y
。我按下一个键,它将字节79十六进制或121十进制放入缓冲区。(从今以后我将使用十六进制。)它放入字节79是因为我的机器设置为UTF-8,而使用UTF-8编码的y
是79。我说ASCII是因为大多数人使用基于ASCII的编码,并且y
在所有这些编码中都将编码为79。///在我的机器上按键将导致C3(195或-61十进制取决于char
在我的编译器中是否有符号),因为使用UTF-8编码的是两个字节C3 A9。