请告诉我为什么这段代码会出现段错误?
我想将命令拆分为标记,但我不知道为什么会出现段错误!!
char command[500]="asdadas asdasdas asdadas";
int i,j,k;
char tokens[4][200];
for(i=0,j=0,k=0; i<strlen(command); i++)
{
if(command[i]==' ')
{
tokens[j][k]='\0';
k=0;
j++;
continue;
}
tokens[j][k]=command[i];
k++;
}
tokens[j][k]='\0';
最佳答案
command
未初始化。这意味着 strlen(command)
调用可能会超出 500 字节,从而导致段错误。
在使用之前初始化您的 command
数组。例如 memset
。
除此之外,没有任何边界检查和一些任意数组长度。这注定会失败。
关于c - c中char数组的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12928894/