毛狗句子网—你身边的句子专家

毛狗句子网—你身边的句子专家

用c语言统计字符串中单词的个数?

59

统计字符串中单词的个数是C语言编程中的常见任务,可以通过多种方法实现。以下是两种常用方法及示例代码:

方法一:通过空格统计单词个数

假设单词之间以空格分隔(包括多个连续空格),可以通过遍历字符串并统计空格数量来确定单词数。具体思路如下:

初始化计数器:

设置`count`为0,用于记录单词个数。

遍历字符串:

从左到右逐个字符检查:

- 若当前字符是空格且前一个字符不是空格,则表示一个单词结束,`count`加1。

- 若当前字符不是空格,则继续检查下一个字符。

处理边界情况:

字符串开头或结尾的空格不计入单词数。

示例代码

```c

include

include

int countWords(char *str) {

int count = 0;

int inWord = 0; // 标记是否在单词中

for (int i = 0; str[i] != '\0'; i++) {

if (str[i] == ' ' && !inWord) {

count++; // 单词结束,计数器加1

inWord = 1; // 下一个非空格字符属于新单词

} else if (str[i] != ' ') {

inWord = 1; // 当前字符属于单词

}

}

return count;

}

int main() {

char str;

printf("请输入字符串: ");

fgets(str, sizeof(str), stdin);

printf("单词个数: %d\n", countWords(str));

return 0;

}

```

方法二:使用`strtok`函数

C标准库提供了`strtok`函数,可以方便地分割字符串。通过以空格为分隔符调用`strtok`,可简化单词计数过程。具体步骤:

包含头文件:

`include `

调用`strtok`:

将字符串按空格分割成单词数组

统计单词数:

通过遍历分割后的数组统计非空元素个数

示例代码

```c

include

include

int countWords(char *str) {

if (str == NULL) return 0;

char *token = strtok(str, " ");

int count = 0;

while (token != NULL) {

count++;

token = strtok(NULL, " ");

}

return count;

}

int main() {

char str;

printf("请输入字符串: ");

fgets(str, sizeof(str), stdin);

printf("单词个数: %d\n", countWords(str));

return 0;

}

```

注意事项

空格处理:

两种方法均假设单词之间以空格分隔,需注意处理多个连续空格的情况。

输入验证:

实际应用中应检查输入字符串是否为`NULL`,并避免缓冲区溢出。

标点符号:

上述方法仅统计以空格分隔的单词,若需处理标点符号,需在统计前过滤非字母数字字符。

通过以上方法,可以灵活地统计字符串中的单词个数,根据需求选择合适的方法即可。