用C语言写下面这个程序:【问题描述】 实现程序:统计文本文件中的单词数和字符个数(不计算行末回车符)。单词指的是仅由英文字母组成的串,如:is7years这样的串按照两个单词计算。 【输入形式】 读取当前目录下文本文件in.txt,以统计该文件中单词和字符个数。 【输出形式】 输出in.txt中单词和字符个数,中间以一个空格分隔。 【样例输入】 in.txt的内容为: Hi I am an (CQU)student. 【样例输出】 6 23 【样例说明】 该输入文件中共有6个单词(即Hi, I, am, an, CQU, student)及23个字符。
时间: 2024-03-22 11:40:12 浏览: 20
以下是 C 语言的代码实现:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
FILE *fp = fopen("in.txt", "r");
int word_count = 0, char_count = 0;
char c, prev_c = ' ';
while ((c = fgetc(fp)) != EOF) {
if (isalpha(c)) { // 如果是字母
char_count++;
if (!isalpha(prev_c)) { // 如果前一个字符不是字母,说明是新单词的开始
word_count++;
}
}
prev_c = c;
}
printf("%d %d\n", word_count, char_count);
fclose(fp);
return 0;
}
```
在这个程序中,我们使用了 `fopen` 函数打开文件,使用 `fgetc` 函数逐个读取文件中的字符。对于每个字母,我们先统计字符数,再判断是否是新单词的开始。如果前一个字符不是字母,说明当前是新单词的开始,此时单词数加 1。最后输出单词数和字符数即可。
相关问题
写一段C语言程序程序统计文本文件(纯英文)的字符数或者单词数。
以下是统计文本文件字符数和单词数的C语言程序:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
FILE *fp;
char filename[1000], ch;
int characters = 0, words = 0;
printf("Enter the filename: ");
scanf("%s", filename);
fp = fopen(filename, "r");
if (fp == NULL) {
printf("Error opening file.\n");
return 0;
}
while ((ch = fgetc(fp)) != EOF) {
characters++;
if (isspace(ch)) {
words++;
}
}
fclose(fp);
printf("Characters: %d\n", characters);
printf("Words: %d\n", words + 1);
return 0;
}
```
这个程序会要求用户输入要统计的文本文件的文件名,然后打开文件并逐个字符读取。每遇到一个空格,就会认为前面的一段文字是一个单词,单词数就会加一。最后输出统计结果:字符数和单词数(单词数加一是因为最后一个单词后面没有空格)。
用C语言输入一个文本,统计单词数和字符数
好的,下面是用C语言实现统计单词数和字符数的代码:
```
#include<stdio.h>
#include<string.h>
int main()
{
char text[1000];
int i, words = 0, characters = 0;
printf("请输入文本:\n");
fgets(text, 1000, stdin); // 从标准输入读入文本
// 统计单词数和字符数
for(i = 0; i < strlen(text); i++)
{
if(text[i] == ' ' || text[i] == '\n' || text[i] == '\t') // 如果当前字符是空格、换行或制表符
{
words++; // 单词数加1
}
else
{
characters++; // 字符数加1
}
}
printf("单词数为:%d\n", words);
printf("字符数为:%d\n", characters);
return 0;
}
```
代码解释:
1. 首先定义了一个字符数组 `text`,用于存储输入的文本;
2. 定义了两个变量 `words` 和 `characters`,用于统计单词数和字符数;
3. 使用 `fgets` 函数从标准输入读入文本,最多读入 1000 个字符;
4. 使用 `for` 循环遍历文本中的每一个字符,如果当前字符是空格、换行或制表符,则认为前面的字符组成了一个单词,单词数 `words` 加 1,否则字符数 `characters` 加 1;
5. 最后输出统计结果。
注意事项:为了避免统计错误,需要注意单词之间的分隔符,这里认为空格、换行和制表符都是单词的分隔符。