Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
本scanf声明不适用于';t请求任何输入,if-else梯形图语句将被跳过。为什么会这样?_C_Scanf - Fatal编程技术网

本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。