Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.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
C 为什么这个循环只执行4次?_C - Fatal编程技术网

C 为什么这个循环只执行4次?

C 为什么这个循环只执行4次?,c,C,我是c编程的初学者。我只是想知道为什么这个循环不能正常工作 #include <stdio.h> #include <stdlib.h> int main() { int i; char x[8]; char t; for (i = 0; i < 8; i++) { scanf("%c", &t); x[i] = t; } return 0; } #包括 #包括 int m

我是c编程的初学者。我只是想知道为什么这个循环不能正常工作

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i;
    char x[8];
    char t;

    for (i = 0; i < 8; i++) {
        scanf("%c", &t);
        x[i] = t;
    }
    return 0;
}
#包括
#包括
int main()
{
int i;
charx[8];
查尔特;
对于(i=0;i<8;i++){
scanf(“%c”、&t);
x[i]=t;
}
返回0;
}
它执行8次。
无论何时按enter键提交,您都在输入一个空格字符,该字符占用了您的一次循环迭代。

因为当从键盘输入任何内容时,我们需要按enter键确认输入完成。这个输入保持在缓冲区中,如果下一个输入是char或string,则将enter存储在string或char var中,不等待输入该char或string。在本例中,执行时给出的第一个输入将char存储在X[0]中,并在X[1]中输入,依此类推。所以执行循环8次,但似乎是4次,因为它只请求输入4次。要检查是否将一个printf放入循环

,它将执行8。空格也是字符。@StoryTeller:8不是可执行文件!;-)使用
scanf(“%c”和&t)而不是
scanf(“%c”和&t)。我想从用户那里获取输入,这就是为什么我在x[I]=t;之前使用scanf;。在编写多行代码之前,您需要学习如何调试。即使循环中只有一个printf(“Here\n”)语句,也会显示循环执行了8次,而prinffing掉整数值“t”也会显示原因。使用实际的调试器也很有价值——这是更复杂的应用程序所需要的。一个解决方案会很好吗?问题是为什么。不是如何修复,注释表明这是一项作业/家庭作业。那么,如果不值得这么麻烦,为什么要回答?这个答案应该是注释!非常感谢@Ryan。非常感谢@user8246589。