解题思路:
借助一个字符数组,存放所有可能出现的字符,使用strtok函数将字符串进行分割。
#include <iostream>
#include <string.h>
#define Maxsize 50
//计算一个字符串中有多少单词,并将其输出
using namespace std;
int main(void)
{
char str[Maxsize];
cout << "请输入字符串:" << endl;
gets(str);
char symbol[] = " ,;:\"!?~^"; //存放所有可能出现的字符
char *p;
int count = 0;
p = strtok(str, symbol);
while (p != NULL)
{
count += 1;
puts(p);
p = strtok(NULL, symbol); //NULL表示在当前分割的基础上继续分割
}
cout << count << endl;
return 0;
}
函数说明:
p = strtok(str, symbol);
把字符串str按照symbol中的字符进行分割,然后返回分割的结果;
strtok在str中查找包含在symbol中的字符并用NULL(’\0’)来替换,直到找遍整个字符串。