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

问题描述:

我是c编程的初学者。我只是想知道为什么这个循环无法正常工作。为什么这个循环只执行4次?

#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; 
} 
+4

它执行8.空格也是字符。 – StoryTeller

+3

@StoryTeller:8不是可执行文件! ;-) – alk

+2

使用'scanf(“%c”,&t);'而不是'scanf(“%c”,&t);'。 – rsp

它执行8次。 无论何时按下回车键提交,您都会输入一个空白字符,它正在消耗您的一次循环迭代。

+1

解决方案会很好吗? –

+1

问题问为什么,而不是如何解决,意见建议这是一个任务/作业 –

+0

那么为什么回答,如果它不值得打扰? – StoryTeller

因为当从键盘输入任何输入时,我们需要按回车确认输入完成。这将进入缓冲区,如果下一个输入是字符或字符串,则存储输入字符串或char var,并且不要等待输入该字符或字符串。在这种情况下,执行时给出的第一个输入将char存储在X [0]中并输入到x [1]中,依此类推。所以执行循环8次,但似乎是4次,因为它只要求输入四次。检查将一个printf放入循环中

+0

非常感谢@ user8246589。 –