c中的字数统计程序(应排除注释)

时间:2019-03-27 11:44:31

标签: c

我目前有任务要在c中编写单词计数程序。任务是您的程序应计算字符,行和单词。即使在注释内,也应计算行数。注释应以“”空格字符表示。

我试图使用switch功能实现单词内外的大小写。但是我在评论时遇到麻烦。在第一个if语句中,我尝试检查我们是否在评论中,如果是,请跳过它。

#include <stdio.h>
#include <ctype.h>
#define word 1
#define nword 0

    int main(void)
    {

        int c,d,nmb = 0 , state = nword , ch = 0, ln = 0;
        while((c=getchar())!=EOF)
        {
            if( c == '/' )
            {
                 if((d=getchar())=='*')
                {       

                     int f;
                     c = getchar();
                     d = getchar();

                     while(c!='*' || d !='/')
                     {
                        c = d;
                        d = getchar();
                        if(d == '\n')
                        { ln++ ; ch++; }
                        if(d == EOF)
                        { f=1 ; break; }

                    }
                    if(f==1)
                    printf("problem in line: %d\n", ln);
                    state=word;
                    nmb++;
                }
            }
            switch(state)
            {
                case nword:

                    if(isspace(c))
                     {
                        state=word;
                        nmb++;  
                    }
                    break;
                case word:

                    if(!isspace(c))
                        state=nword;
                    break;
            } 
            if (c == '\n')
            ln++;
            ch++;
        }
        printf("words: %d\n", nmb);
        printf("chars: %d\n", ch);
        printf("lines: %d\n", ln);
        return 0;
    }

我无法找到正确的测试用例答案。我也无法调试,因为我看不到可以修复的某些模式。有些测试用例匹配正确,而有些则不匹配。(https://ee209-2019-spring.github.io/assignment/wc209/中的测试用例)

0 个答案:

没有答案