扫描用户定义的字符数

时间:2017-11-24 10:37:14

标签: c character console-application

所以这在理论上似乎是一个相对简单的C问题,但在实践中它有点困难。 因此用户输入数字N,之后他们输入N个字符。一个程序应该计算大写字母的出现次数(或小写或其他什么,这不是问题)。这就是控制台的外观(例如,用户输入数字3):

输入N:3

输入字符1:p

输入字符2:/

输入字符3:s

等等。我尝试这样做的方式是:

#include <stdio.h>
#include <ctype.h>
int main(int argc, char **argv)
{

    int n;
    scanf("%d", &n);
    int b = 0;
    for (int i = 1; i<=n; i++){
        printf("Enter character %d: ", i);
        char c;
        scanf("%c", &c);
        if (islower(c)) b++;
    }
    printf("%d\n", b);

    return 0;
}

这似乎是一个很好的解决方案但问题是显然在输入N后按下ENTER键,或者在输入任何字符后被识别为需要输入的字符之一。现在我不确定这是否是它应该工作的方式,但是当用户完成某个输入时,不是ENTER键的角色告诉控制台?我的意思是如果我输入N时不能按Enter键而不将其作为一个角色捕获,我怎么能输入N?这是我测试时控制台的样子:

the test

所以我想我可以以某种方式使循环运行两次N的时间,每次都忽略第一个字符,但我想知道我是否应该将其视为编码问题或控制台问题。

有什么想法吗?感谢。

0 个答案:

没有答案