代码:
char *m[10];
char * s;
int lcounter=0;
int sd=0;
char mem_buf [ 500 ];
while ( fgets ( mem_buf, sizeof mem_buf, infile ) != NULL )
{
m[lcounter] =(char *) malloc(10*sizeof(char));
item = strtok(mem_buf,delims);
m[lcounter]=item;
printf("\n value inside==== :%s:",m[lcounter]);
lcounter=lcounter+1;
}
for(i=0;i<lcounter;i++)
{
printf("\n value outside==== :%s:",m[sd]);
sd++;
}
输入:
goo|
bbb|
ccc|
当我执行此操作时,输出低于输出:
value inside==== : goo
value inside==== : bbb
value inside==== : ccc
value outside====:ccc
value outside====:ccc
value outside====:ccc
但我需要:
value outside====:goo
value outside====:bbb
value outside====:ccc
答案 0 :(得分:1)
如果您希望它在循环之外持续使用strcpy
。 strtok
可以重复使用相同的指针。
答案 1 :(得分:1)
这不会复制C字符串:
m[lcounter]=item;
相反,请使用:
strcpy(m[lcounter], item);