这个代码计算字符,行和单词的数量是如何工作的?

时间:2013-05-21 06:11:27

标签: c

while (fgets(line, MAX_LINE_LEN-1, infile) != NULL) {
    num_lines += 1;
    num_chars += strlen(line);
    if (strncmp(line, "", MAX_LINE_LEN) != 0) {
        num_words++;
    }
}

整个程序计算单词数。这段代码增加了文本的行数并计算了单词,但我不知道这里发生了什么。它是如何工作的?

2 个答案:

答案 0 :(得分:0)

strlen( line )

给出line中的字符数。 (检查man strlen。)

num_chars += strlen( line )

将该号码添加到num_chars

strncmp( line, "", MAX_LINE_LEN )

line的内容与空字符串进行比较(但为了安全起见,请不要读取MAX_LINE_LEN以上的line个字符,以防它不为空封端的)。如果相等则返回0。 (有关详细信息,请参阅man strncmp。)

if (strncmp(line, "", MAX_LINE_LEN) != 0) {
    num_words++;
}

如果num_words 等于空字符串,则向line添加1。

请注意num_words是用词不当,因为此处没有字数统计,只计算非空行。

答案 1 :(得分:0)

我相信通过编写代码可以大大简化代码:

if (line[0] != '\0') {

因为这是:

if (strncmp(line, "", MAX_LINE_LEN) != 0) {

本质上是 - 它检查line是否为非空字符串。

所以回答你的问题 - 在执行循环num_words之后将等于文件中非空行的数量。