繁体   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