簡體   English   中英

程序不讀取循環中的最后一個字符

[英]Program doesn't read the last character in a loop

所以我有一個程序,你輸入數字“n”,然后輸入 n 個字符。 該程序測試您是否可以用這些字符組成一個單詞“Nice”。 問題是,每當我輸入一個字符並按 Enter 鍵時,程序也會將該輸入讀取為一個字符,所以我想我有點像這樣解決了它(?):

    scanf("%c\n")

首先,即使對我來說,這似乎也不是一個很好的解決方案(我對此很陌生)。 另一件事是,當我輸入一個數字 4 並輸入字母“N”“i”“c”和“e”時,它不會讀取最后一個字母“e”,因此程序基本上不能正常工作。 我希望有人對此有一個解釋,我希望有人可以幫助我。 如果這是一個愚蠢的問題,我很抱歉。

這是整個代碼:

#include <stdio.h>
#include<stdlib.h>
int main(){

int n,i,a,b,c,d;
char q;

printf("Enter the number of letters: ");
scanf("%d",&n);

i=1;
a=0;
b=0;
c=0;
d=0;

while(i<=n){

    printf("Type letter no %d: ",i);
    scanf("%c\n",&q);

    if(q=='N')
        a++;

    if(q=='i')
        b++;

    if(q=='c')
        c++;

    if(q=='e')
        d++;

i++;
}

if(a>0 && b>0 && c>0 && d>0)
    printf("Nice.");

    else
        printf("Not nice.");

}

正如chux所提到的,更換你的

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

 scanf(" %c",&q);

為什么?

當用戶給出的字母數類似於“ 4\n ”時,第二個 Scanf 會將這個'\n'作為第一個字母scanf("%c\n",&q);

printf("Enter the number of letters: ");
scanf("%d",&n); //user input is e.g "4\n"

第二次掃描

 printf("Type letter no %d: ",i);
    scanf("%c\n",&q); //Here q takes the value q = '\n' 

這里有一些有用的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM