打印给定的输入字符数

时间:2015-06-05 19:39:22

标签: c

我正在研究K& R的 The C Programming Language 的锻炼计划。我想在输入中打印单词的长度,然后用字符“X”打印长度。

#include<stdio.h>

void main ()
{
    int c,a[20];
    int j,k,i=0;
    int ch;
    int count,count1;

    while((c = getchar()) != EOF)
    {
        if(c == ' ' || c == '\n' || c == '\b')
        {
            ++i;
            a[i] = count;
            k = i;
            count = 0;
        }
        else
        {
            ++count;
        }
    }

    for(i = 0; i < k; i++)
    {
        count1 = a[i];

        for(j = 0; j < count1; j++)
        {
            printf("x");
        }

        printf("\n");
    }

    printf("\n");
}

1 个答案:

答案 0 :(得分:1)

你还应该使用一个状态变量来告诉你当前是否在一个单词里面。

尝试:

state=OUT;
len=0;
max=-1;
while((c=getchar())!=EOF)
{
    if( (c==' '||c=='\n'||c=='\t') && state==IN)
    {
        state=OUT;
        l[len-1]++;
        if(l[len-1]>max)
                max=l[len-1];
        len=0;
    }
    else
    {
        state=IN;
        len++;
    }
}

PS:OUT和IN是符号常量,可以具有任何但不同的值。 此外,您必须在数组中增加与长度(l[len-1]++)匹配的元素。