64,691
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <string>
using namespace std;
int main()
{
char str[] = "Iwhat love C++ program";
char d[] = " ";
cout <<strlen(str) <<endl;
char *p = strtok(str,d);
while (NULL != p)
{
cout <<p <<" " <<strlen(str) <<endl; //5
p = strtok(NULL,d);
}
return 0;
}
3。一个小程序输出问题
#include <iostream>
#include <string>
using namespace std;
int main()
{
char str[] = "I love C++ program";
char d[] = " ";
cout < <strlen(str) < <endl;
char *p = strtok(str,d);
while (NULL != p)
{
cout < <p < <" " < <strlen(str) < <endl;
p = strtok(NULL,d);
}
return 0;
}
输出结果如下:(为什么后面的strlen()得到的结果是1呢???
18
I 1
love 1
C++ 1
program 1
char *p = strtok(str,d); //第一次找到分隔符位置并用'\0'填充,所以导致到strlen(str)为1
1。两个参数的类型是什么,第一个只能是char []而不能是char *对吧?请讲解下两者的区别,比如存储方式等,第二个参数有要求吗?