C语言统计一行文本中的单词个数
时间: 2024-12-18 18:26:22 浏览: 16
C语言中使用lex统计文本文件字符数
在C语言中统计一行文本中的单词个数,可以采用以下步骤:
1. **初始化计数器**:创建一个整型变量,用于存储单词的数量,初始值设为0。
2. **读取输入行**:从用户输入或文件中获取一行文本,并将其存储到一个字符数组中。
3. **处理分隔符**:遍历字符数组,遇到空格、换行符或其他非字母数字字符时,表示当前单词结束。如果到达字符串结尾还没有遇到分隔符,则最后一个单词算作一个。
4. **更新计数**:每当找到分隔符,就将计数器加一。
5. **处理边界条件**:对于首尾的空格,需要特殊处理。如果是开头的第一个空格,跳过;如果是结尾的空格,虽然不是单词的一部分,也要计入总词数。
6. **返回结果**:最后,计数器就是该行文本中的单词总数。
下面是一个简单的示例代码片段:
```c
#include <stdio.h>
#include <ctype.h>
int count_words(char* line) {
int word_count = 0;
char* p = line; // 指针指向字符数组
while (*p != '\0') { // 遍历整个字符串
if (isspace(*p)) { // 如果是空格
if (*(p - 1) == '\0') break; // 到达开头的空格忽略
else ++word_count; // 否则增加单词计数
} else if (isalpha(*p)) { // 如果是字母
while (isalnum(*p)) p++; // 跳过单词内的空格和其他非字母数字字符
}
p++;
}
// 包含最后一个单词
if (*p == '\0' && isalpha(line[strlen(line) - 1])) word_count++;
return word_count;
}
int main() {
char input[100];
printf("请输入一行文本:");
fgets(input, sizeof(input), stdin);
input[strcspn(input, "\n")] = '\0'; // 删除末尾的换行符
int wordCount = count_words(input);
printf("该行文本中有 %d 个单词。\n", wordCount);
return 0;
}
```
阅读全文