统计字符串中单词的个数是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 将字符串按空格分割成单词数组 通过遍历分割后的数组统计非空元素个数 示例代码: ```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`,并避免缓冲区溢出。 上述方法仅统计以空格分隔的单词,若需处理标点符号,需在统计前过滤非字母数字字符。 通过以上方法,可以灵活地统计字符串中的单词个数,根据需求选择合适的方法即可。包含头文件:
调用`strtok`:
统计单词数:
空格处理:
输入验证:
标点符号: