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++;
}
}
整个程序计算单词数。这段代码增加了文本的行数并计算了单词,但我不知道这里发生了什么。它是如何工作的?
答案 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
之后将等于文件中非空行的数量。