проблема с использованием массива указателей? - PullRequest
0 голосов
/ 26 февраля 2011

код:

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

Ответы [ 2 ]

1 голос
/ 26 февраля 2011

Это не скопирует строку C:

m[lcounter]=item;

Вместо этого используйте:

strcpy(m[lcounter], item);
1 голос
/ 26 февраля 2011

Используйте strcpy, если хотите, чтобы оно продолжалось вне цикла.strtok может использовать один и тот же указатель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...