2017-02-25 82 views
0
int main(){ 
    char students[20][20]={ 
     "Ehtisham Hassan", 
     "Arbab Mushtaq", 
     "M Yaseen Ayub", 
     "Qamar Farooq", 
     "Muhammad Muneeb" 
    }; 
    char isPresent; 

    for(int b=0; b<5; b++){ 

     printf("%s\n",students[b]); 
     scanf("%c\n",&isPresent); 

    } 

    return 0; 
} 

我希望自己的代码是从学生数组中打印一个学生的名字,然后等待用户输入一个字符,但它所做的是打印一名学生的名字,然后存储一个字符然后当循环第二次运行时,它会打印两个学生的名字,然后等待字符输入。谁能说出为什么会发生这种情况带循环inC的字符输入?

这里是我的程序的输出:

Ehtisham Hassan 
a 
Arbab Mushtaq 
M Yaseen Ayub 
a 
Qamar Farooq 
Muhammad Muneeb 
a 

预期输出:

Ehtisham Hassan 
a 
Arbab Mushtaq 
a 
M Yaseen Ayub 
a 
Qamar Farooq 
a 
Muhammad Muneeb 
a 
+0

仔细阅读'scanf' **的文档**。 – Olaf

回答

1

使用

scanf(" %c",&isPresent); 
     ^^ 
     white space and removed '\n` 

而不是

scanf("%c\n",&isPresent); 

请参阅此FAQ问题。

+1

非常感谢你......它的工作。你能告诉我这两种说法有什么不同吗?空白空间很重要吗?为什么没有空白就无法工作。 –