我尝试拆分字符串并使用strtok
和strncpy
将结果放入数组中,但是当代码运行时,它会抛出错误。
代码段:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char str[] ="( 6 + 2 )";
char *pch;
int i = 0;
pch = strtok(str, " ");
while (pch != NULL)
{
printf("%s\n", pch);
pch = strtok (NULL, " ");
i = i + 1;
}
char arreglo[i];
strncpy(arreglo, pch, sizeof(arreglo));
cin.get();
}
有人可以告诉我我做错了什么或如何解决它?
答案 0 :(得分:1)
strncpy( arreglo, pch, sizeof(arreglo) );
此语句提供细分错误,因为pch
为NULL
。
答案 1 :(得分:0)
此代码段
char arreglo[i];
strncpy( arreglo, pch, sizeof(arreglo) );
毫无意义。
首先,C ++中没有可变长度数组。所以最好不要使用编译器的这种扩展。
其次退出前一循环pch
后等于NULL。而且这句话
strncpy( arreglo, pch, sizeof(arreglo) );
没有做你想做的事。
我认为你的意思是以下
#include <vector>
#include <string>
//...
std::vector<std::string> v;
pch = strtok( str, " " );
while ( pch != NULL )
{
printf ("%s\n",pch);
v.push_back( pch );
pch = strtok( NULL, " " );
}