【问题描述】 实现程序:统计文本文件中的单词数和字符个数(不计算行末回车符)。单词指的是仅由英文字母组成的串,如:is7years这样的串按照两个单词计算。 【输入形式】 读取当前目录下文本文件in.txt,以统计该文件中单词和字符个数。 【输出形式】 输出in.txt中单词和字符个数,中间以一个空格分隔。 【样例输入】 in.txt的内容为: Hi I am an (CQU)student. 【样例输出】 6 23 【样例说明】 该输入文件中共有6个单词(即Hi, I, am, an, CQU, student)及23个字符。用C语言写
时间: 2024-03-22 22:40:54 浏览: 50
以下是 C 语言的另一种实现方式:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAX_WORD_LEN 100
int main() {
FILE *fp = fopen("in.txt", "r");
char word[MAX_WORD_LEN + 1];
int word_count = 0, char_count = 0;
while (fscanf(fp, "%s", word) == 1) {
int len = strlen(word);
char_count += len;
int is_word = 1;
for (int i = 0; i < len; i++) {
if (!isalpha(word[i])) {
is_word = 0; // 如果单词中包含非字母字符,则不是单词
break;
}
}
if (is_word) {
word_count++;
}
}
printf("%d %d\n", word_count, char_count);
fclose(fp);
return 0;
}
```
在这个程序中,我们使用 `fscanf` 函数读取文件中的单词。对于每个单词,我们先统计字符数,然后判断是否是单词。如果单词中包含非字母字符,则不是单词。否则单词数加 1。最后输出单词数和字符数即可。需要注意的是,在这个程序中,我们假设单词的最大长度不超过 `MAX_WORD_LEN`。如果需要处理更长的单词,需要修改数组的大小。
阅读全文