在c ++中使用strtok和strcpy

时间:2014-09-08 16:29:26

标签: c++

我正在使用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;
}

1 个答案:

答案 0 :(得分:1)

两个连续的调用strtok(NULL," ")将不会返回两次指向字符串中单词的相同指针,正如您所期望的那样,而是指向连续单词的指针。另一方面,当您绕过while循环时,您似乎希望获得指向新标记的指针。事情并非如此。