2015-10-02 44 views
2

我已经写了这个代码,用于输入两个大小为5的字符ab在c中输入字符数组

当我给输入:

abcde 
abcde 

输出b[2]应该c,但它给为b

#include <stdio.h> 

using namespace std; 

int main(){ 

    char a[5], b[5]; 
    int i; 
    for(i = 0; i < 5; i++){ 
     scanf("%c", a + i); 
    } 

    for(i = 0; i < 5; i++){ 
     scanf("%c", b + i); 
    } 

    printf("%c", b[2]); 
} 
+0

然后我如何避免这种 –

+2

选择一种语言。 C不**具有''命名空间标准'',并在C++中,你会使用'std :: cin >>' – MSalters

+0

看到这个答案http://stackoverflow.com/questions/7898215/how-to-clear -input-buffer-in-c – kapil

回答

2

记住按第一个scanf键入abcde后进入?在第二个for循环的第一次迭代期间,该字符被第二个scanf消耗。

您可以通过添加

scanf("%*c"); 

getchar(); 

两个for环之间固定。这将扫描并丢弃换行符。

+1

或者,更好的是,如果你的输入由行组成,使用一个读取行的输入函数。 –