我正在使用strcpy将句子中的单词复制到字符串数组中。但是这段代码没有按预期工作。如果有的话请指出错误..
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int i=0,j,k;
char a[100],*str[100];
char *b;
cout<<"enter a sentence:\n";
cin.getline(a,100);
str[0] = strtok(a," ");
while(str[i]!=NULL)
{
i=i+1;
k=strlen(strtok(NULL," "));
str[i]=new char[k+1];
strcpy(str[i],strtok(NULL," "));
}
for(i=0;;i++)
{
if(str[i]!=NULL)
cout<<"\n"<<str[i];
else
break;
}
return 0;
}
答案 0 :(得分:1)
两个连续的调用strtok(NULL," ")
将不会返回两次指向字符串中单词的相同指针,正如您所期望的那样,而是指向连续单词的指针。另一方面,当您绕过while
循环时,您似乎希望获得指向新标记的指针。事情并非如此。