c语言统计单词个数
时间: 2023-07-02 17:14:35 浏览: 42
以下是一个简单的 C 语言程序,用于统计给定文本中单词的数量:
```c
#include <stdio.h>
#include <ctype.h>
#define IN 1
#define OUT 0
int main() {
int c, state, count;
state = OUT;
count = 0;
while ((c = getchar()) != EOF) {
if (isspace(c)) {
state = OUT;
}
else if (state == OUT) {
state = IN;
count++;
}
}
printf("单词数量为:%d\n", count);
return 0;
}
```
在此程序中,我们使用 `getchar()` 函数逐个读取输入的字符。我们使用 `isspace()` 函数判断字符是否为空格符、制表符或换行符。当我们发现一个空格符时,我们将状态设置为 “OUT”,表示我们不在单词中。当我们发现一个非空格符时,我们检查当前状态是否为 “OUT”。如果是,则表示我们进入了一个新的单词,并将计数器增加 1。最后,我们输出计数器的值作为结果。
请注意,此程序只是一个简单的示例,它假设单词之间仅由一个空格符分隔,并且不考虑标点符号和其他字符的影响。在实际应用中,您需要更复杂的算法来更准确地统计单词数量。
相关问题
c语言统计英文句子单词个数
可以使用C语言的字符串处理函数和循环语句来统计英文句子中的单词个数。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char sentence[1000];
int wordCount = 0;
printf("请输入一个英文句子:\n");
fgets(sentence, sizeof(sentence), stdin); // 从标准输入读取一行字符串
char* token = strtok(sentence, " "); // 使用空格作为分隔符,获取第一个单词
while (token != NULL) {
wordCount++; // 统计单词个数
token = strtok(NULL, " "); // 继续获取下一个单词
}
printf("单词个数为:%d\n", wordCount);
return 0;
}
```
该程序首先使用 `fgets` 函数从标准输入读取一个英文句子,并将其存储在字符数组 `sentence` 中。然后使用 `strtok` 函数将句子按照空格分隔为多个单词,使用循环语句统计单词个数。最后输出单词个数。
c语言统计文件中单词个数
你可以使用C语言中的文件操作函数,例如fopen、fread、fclose等,以及字符串操作函数,如strtok、strcmp和strlen等来实现统计文件中单词个数的功能。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_WORD_LENGTH 50
int main() {
char filename[100];
printf("请输入文件名:");
scanf("%s", filename);
FILE *fp;
fp = fopen(filename, "r");
if (fp == NULL) {
printf("文件打开失败!\n");
return 1;
}
char line[1000], word[MAX_WORD_LENGTH];
int count = 0;
while (fgets(line, 1000, fp) != NULL) {
char *token = strtok(line, " \t\n\r"); // 按空格、制表符、换行符分割单词
while (token != NULL) {
strcpy(word, token);
if (strlen(word) > 0) {
count++;
}
token = strtok(NULL, " \t\n\r");
}
}
printf("单词个数为:%d\n", count);
fclose(fp);
return 0;
}
```
该程序首先要求用户输入文件名,然后打开文件并逐行读取文件,使用strtok函数将每行文本按照空格、制表符、换行符等分割为单词,然后判断单词长度是否大于0,如果是则累加单词个数。最后输出单词个数并关闭文件。