我试图模仿strtok功能,但却出现了分段错误。请帮帮我。
这是我的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char argv[])
{
int i=0;
char c[]="get the hell out of here";
char *p;
char *temp=(char *)malloc(100);
while(c[i]!='\0')
{
if(c[i]!=' ')
{
*temp=c[i];
temp++;
i++;
}
else
{
*temp='\0';
printf("printing tokenn");
puts(temp);
i++;
temp="";
}
}
return 0;
}
答案 0 :(得分:8)
temp="";
这会导致temp
指向不可修改的内存,导致下次尝试修改时出现故障。您希望将temp
恢复为malloc
(您忘记保存)的值。