限制在C中为getChar循环计算的字符数

时间:2015-09-24 01:35:31

标签: c input

我正在制作一个小程序,它接收来自用户的输入并显示每个元音在输入中出现的次数(以及位数)。我无法弄清楚如何做的一件事就是限制它,以便只计算前50个字符(例如,如果用户输入超过50个数字,则忽略过去的50个字符。)

我已经尝试过一个计数变量,它在每次迭代时递增但不起作用。

#include <stdio.h>

int main(void) {
    int input, digits = 0, a = 0, e = 0, i = 0, o = 0, u = 0, count = 0;
    printf("Enter a string of chars. Hit control - D to end. Thanks. \n");
    while(count < 51){
    while ((input = getchar()) != EOF) {
        switch(input) {
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9': digits += 1; break;
            case 'a':
            case 'A': a += 1; break;
            case 'e':
            case 'E': e += 1; break;
            case 'i':
            case 'I': i += 1; break;
            case 'o':
            case 'O': o += 1; break;
            case 'u':
            case 'U': u += 1; break;
        }
            count += 1;
       }

    }
    printf("a:%d e:%d i:%d o:%d u:%d digits:%d\n",a,e,i,o,u,digits);
}

2 个答案:

答案 0 :(得分:1)

你的内部while循环将继续循环直到EOF才会退出循环并递增并检查你的计数器。将计数器的检查放在相同的while循环中,如同其中一条注释一样。

删除while(count < 51) {和右括号,并制作while声明:

while ((count < 51) && (input = getchar()) != EOF) {

答案 1 :(得分:0)

  

怎么做是限制它,以便只计算前50个字符

放弃while(count < 51){。更改选择增量以添加0或1

#define LIMIT 50
// digits += 1;
digits += count < LIMIT;
...
a += count < LIMIT;
...
count += 1;