[英]segmentation fault with char array in c
請告訴我為什么這段代碼給我分段錯誤?
我想將命令拆分為令牌,但我不知道為什么它會給我分段錯誤!
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
。
除此之外,沒有邊界檢查任何東西和一些任意的數組長度。 這注定會失敗。
您對tokens
有tokens
。 您將在每次迭代中遞增j
和k
而不進行任何檢查。
無論如何,您知道已經存在執行您想執行的功能的功能嗎?
要將“更多”添加到其他人的答案中,可以使用strsep。 看下面的示例代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
char * command=NULL, *tok=NULL;
command =strdup("asdadas asdasdas asdadas");
while ((tok = strsep(&command, " ")) != NULL )
{
printf ("..%s..\n", tok);
}
希望能幫助到你。 ;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.