实现程序:统计文本文件中的单词数和字符个数(不计算行末回车符)。单词指的是仅由英文字母组成的串,如:is7years这样的串按照两个单词计算。 【输入形式】 读取当前目录下文本文件in.txt,以统计该文件中单词和字符个数。 【输出形式】 输出in.txt中单词和字符个数,中间以一个空格分隔。C
时间: 2024-03-26 22:36:16 浏览: 114
以下是一个可以实现该功能的 C 程序:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
FILE *in = fopen("in.txt", "r");
if (in == NULL) {
printf("Failed to open input file.\n");
return 1;
}
int word_count = 0, char_count = 0;
int in_word = 0; // 标记当前是否在一个单词中
while (!feof(in)) {
char c = fgetc(in);
if (isalpha(c)) { // 如果是字母
if (!in_word) { // 如果当前不在一个单词中
in_word = 1; // 标记进入单词
word_count++; // 单词数加一
}
char_count++; // 字符数加一
} else if (c == '\r' || c == '\n' || c == '\t' || c == ' ') { // 如果是空白符
in_word = 0; // 标记退出单词
} else { // 如果是其他字符
char_count++; // 字符数加一
}
}
fclose(in);
printf("Word count: %d\n", word_count);
printf("Char count: %d\n", char_count);
return 0;
}
```
程序首先尝试打开当前目录下的 `in.txt` 文件,如果失败则输出错误信息并返回。然后使用一个循环逐个读取文件中的字符,根据字符的类型更新单词数和字符数。如果一个字符是字母,则在当前不在一个单词中时进入一个新单词,同时字符数加一。如果一个字符是空白符,则退出当前单词。如果一个字符是其他字符,则字符数加一。
最后输出单词数和字符数即可。
阅读全文