C语言程序编写,已知文件dict.txt中存储一段由若干个单词组成的文本,统计出该文本中单词的数量及标点符号的数量(分隔单词的空格不算在内)。
时间: 2024-02-12 19:04:57 浏览: 69
可以按照以下步骤进行:
1. 打开文件dict.txt,判断是否成功打开。
2. 定义变量`word_count`和`punct_count`分别表示单词数量和标点符号数量,初始化为0。
3. 读取文件中的每一个字符,如果是空格或换行符,则说明一个单词结束,将`word_count`加1;如果是标点符号,则将`punct_count`加1。注意要排除空格的计数。
4. 关闭文件。
5. 输出单词数量和标点符号数量。
具体实现的代码如下:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
FILE *fp = fopen("dict.txt", "r");
if (fp == NULL) {
printf("Failed to open file dict.txt\n");
return 1;
}
int word_count = 0, punct_count = 0;
char c, prev = '\0';
while ((c = fgetc(fp)) != EOF) {
if (isspace(c) || c == '\n') {
if (!isspace(prev) && prev != '\0') {
word_count++;
}
} else if (ispunct(c)) {
punct_count++;
}
prev = c;
}
fclose(fp);
printf("The text contains %d words and %d punctuation marks\n", word_count, punct_count);
return 0;
}
```
在这个程序中,我们使用了`fopen`函数打开了`dict.txt`文件,并以只读模式打开。然后,我们定义了变量`word_count`和`punct_count`分别表示单词数量和标点符号数量,并初始化为0。接着,我们使用`fgetc`函数逐个读取文件中的字符。如果这个字符是空格或换行符,则说明一个单词结束,我们就将`word_count`加1;如果这个字符是标点符号,则将`punct_count`加1。注意到如果前面的字符不是空格或换行符,我们才将`word_count`加1。最后,我们使用`fclose`函数关闭文件,并输出单词数量和标点符号数量。
阅读全文