统计单词个数 c 语言代码
时间: 2024-10-11 16:06:08 浏览: 44
在C语言中,统计单词个数通常涉及到输入字符串并遍历它来查找空格分隔的单词。这里是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h> // 包含strtok函数
int count_words(char *str) {
char *token; // 存储当前单词
int word_count = 0;
// 使用strtok函数将字符串分解成单词
token = strtok(str, " "); // 分割符是空格
while (token != NULL) {
++word_count;
token = strtok(NULL, " "); // 从上一次找到的位置继续分割,直到无更多单词
}
return word_count;
}
int main() {
char input[] = "Hello World! This is a test string.";
int word_count = count_words(input);
printf("The number of words in the string is: %d\n", word_count);
return 0;
}
```
在这个代码中,`count_words`函数接收一个字符串作为输入,并通过`strtok`函数逐个找出单词。然后,主函数调用这个函数并打印出单词的数量。
相关问题
用C语言写一段代码,统计一个字符串中的单词个数,字符串中可能出现数字、所有格、标点符号,数字不计入单词个数,所有格与其连接的单词共同算作一个单词
好的,可以使用以下 C 语言代码来实现:
```c
#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
bool is_word_char(char c) {
// 判断一个字符是否是单词字符
return isalpha(c) || (c == '\'');
}
int count_words(char *s) {
int count = 0;
char *p = s;
bool in_word = false; // 标记是否在单词中
while (*p != '\0') {
if (isdigit(*p)) {
// 如果当前字符是数字,则跳过
p++;
} else if (is_word_char(*p)) {
// 如果当前字符是单词字符,则进入单词
if (!in_word) {
in_word = true;
count++;
}
p++;
} else {
// 如果当前字符是分隔符,则退出单词
in_word = false;
if (*p == '\'') {
// 如果当前字符是所有格符号,则将其与前面的单词合并
if (p > s && *(p-1) == 's') {
count--;
}
}
p++;
}
}
return count;
}
int main() {
char s[100];
printf("Please enter a string: ");
fgets(s, sizeof(s), stdin);
printf("The number of words in the string is: %d\n", count_words(s));
return 0;
}
```
其中,`isalpha()` 函数用于判断字符是否是字母,`isdigit()` 函数用于判断字符是否是数字,`is_word_char()` 函数用于判断一个字符是否是单词字符,`in_word` 变量用于标记是否在单词中,`if` 语句用于判断单词边界,`if (*p == '\'')` 语句用于判断所有格符号并合并单词。注意,`fgets()` 函数可以读取带空格的字符串,且在字符串末尾自动添加一个空字符 `\0`。
使用c语言来统计英文文本文件中单词个数写一串代码
这是一段 C 语言代码,可以用来统计英文文本文件中单词的个数:
```c
#include <stdio.h>
#include <ctype.h>
int main()
{
FILE* fp = fopen("input.txt", "r");
if (fp == NULL)
{
printf("Failed to open input.txt!");
return 1;
}
int wordCount = 0;
int inWord = 0;
char c;
while ((c = fgetc(fp)) != EOF)
{
if (isspace(c))
{
if (inWord)
{
wordCount++;
inWord = 0;
}
}
else
{
inWord = 1;
}
}
/* Count the last word, if any */
if (inWord)
{
wordCount++;
}
printf("Number of words: %d\n", wordCount);
fclose(fp);
return 0;
}
```
注:该代码将输入的文件名定为 input.txt,可以根据实际情况进行修改。
阅读全文