用c++20标准写一个函数计算字符串中的单词数(假设每个单词之间有一个空白字符进行分隔)
时间: 2023-06-08 13:07:33 浏览: 104
好的,我会回答你的问题。下面是用C语言20标准写一个计算字符串中单词数的函数:
```c
#include <stdio.h>
#include <ctype.h>
int count_words(const char *str) {
int cnt = 0;
int is_word = 0; // 用于判断是否在单词中
while (*str) {
if (isspace((unsigned char)*str)) {
// 如果是空白字符,则不在单词中
is_word = 0;
} else {
// 如果是非空白字符,则在单词中
if (!is_word) cnt++; // 如果上一个字符不在单词中,则计数器加1
is_word = 1;
}
str++;
}
return cnt;
}
```
这个函数的工作原理是:遍历字符串中的每个字符,如果遇到空白字符(如空格、制表符、换行符等),则表示当前不在单词中;否则,如果之前不在单词中,则计数器加1。最后返回计数器的值,即为单词数。
你可以将字符串作为参数传递给这个函数,比如:
```c
int main() {
const char str[] = "Hello, world! This is a string with some words.";
int n = count_words(str);
printf("The string '%s' contains %d words.\n", str, n);
return 0;
}
```
这个程序的输出结果是:
```
The string 'Hello, world! This is a string with some words.' contains 9 words.
```
希望这个函数能够解决你的问题!
阅读全文