C 编程 K&R 练习 1-11

Ale*_*eat 3 c

我目前正在使用字数统计程序。我有一个棘手的练习。
我不明白这个练习到底要我做什么。

这里的练习本身
修改字数统计程序以使用更好的“单词”定义,例如以字母开头的字母、数字和撇号的序列

我无法得到它真正想要的东西。它希望我计算符号、数字、撇号或以太,它希望我为所有这些符号、数字等命名,比如“单词”,-将是A(") word comma(,) A(") 或有其他东西。

这是计算行数、字符数和换行数的程序

#include <stdio.h>

#define YES 1
#define NO 0

main ()
{
    // CTRL+Z will Signal to EOF-End of File 
    int c,nl,nw,nc,inword;  //nl -new line
                            //nw -new word
                            //nc -new chatacter
                            //inword -program in word or not

    inword=NO;
    nl=nw=nc=0;
    while ((c=getchar()) !=EOF)
    {
        ++nc;
        if (c == '\n')
            ++nl;
        if (c == ' ' || c == '\t' || c == '\n')
            inword=NO;
        else if (inword==NO)
        {
            inword=YES;
            ++nw;
        }
    }
    printf("%d %d %d\n", nl,nw,nc);

    getchar(); 
}
Run Code Online (Sandbox Code Playgroud)

你们能向我解释一下练习到底要我做什么吗?我不需要已经完整的代码。我想自己完成编码。我只是不明白我在锻炼中实际需要做什么。

Kar*_*ath 5

您发布的程序将由空格分隔的所有内容视为一个单词。所以这些都是词:12 a,b123456 2-3@!#

它要求您通过更好的单词定义来改进程序,并给出了一个示例:“以字母开头的字母、数字和撇号的序列”。

因此,在这个例子中John's, anda123是一个单词,但是12, 1aand a-bare 不是。