c - c中char数组的段错误

标签 c segmentation-fault runtime-error

请告诉我为什么这段代码会出现段错误?
我想将命令拆分为标记,但我不知道为什么会出现段错误!!

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/

相关文章:

Django/Python 运行时错误 : Maximum recursion depth exceeded

vba - 438 运行时错误

python - 将多维 numpy 数组转换为 ctypes 数组的最有效方法

objective-c - Objective C 对象的 C 数组

C 编程传递字符函数

c++ - SSE _mm_store_ps 段错误问题

c - ret2libc segfault地址为0x0000000000000000

c - 为什么在这种情况下会显示 printw?

C:出现段错误

java - (可能)非常简单的Java多线程问题