У меня есть программа, в которой у меня есть строка из 200 символов, которую я разбил на сегменты, и я безуспешно пытаюсь поместить эти сегменты либо в 2-мерный массив символов, либо в массив указателей на строки через функцию.Я могу успешно сделать это в main, но когда я передаю строку символов и массив 2d char или массив указателей в строки функции, это не работает.Когда я печатаю 2d массив внутри функции, он показывает, что все работает отлично, но когда я печатаю возвращенный массив в main, он только печатает конечное значение следующим образом.
Упрощенный пример кода и вывод ниже:
void func(char *buffer, char **file_list)
{
/*split buffer into segments*/
Strcpy((*file_list + i), segment);
Printf(“i = %d file_list = %s \n”,i, (*file_list + i)); /* this prints the segments perfectly*/
}
Main()
{
Func(buffer, file_list);
For(i=0;i<n;i++)
Printf(“i= %d,split lines in main is %s\n”,i,(*file_list +i));
}
Вывод printf внутри «func»:
Segment one
Segement two
……
Segment n
Вывод printf из main:
Segment n
Segment n
…..
Segment n
Пожалуйста, найдите функцию более подробнониже.Я предполагаю, что вам не нужно видеть список объявлений переменных.
Обратите внимание, что я также пытался передать указатели в качестве ссылок с тем видом, что если бы буфер был ссылкой на исходный массив символов строки, то я бы указывал на это, а не на временные строки.Но по общему признанию я не знаю много о временных переменных.
Void func(char *buffer, char **file_list)
{
newline=strstr(buffer,"\r\n");
while (newline != NULL && (newline-buffer)< READ_SIZE)
{
temp_var=newline;
newline=strstr(newline + 1,"\r\n");
if( newline !=NULL )
{
strncpy((*file_list+i),temp_var,(newline-temp_var));
printf("i= %d, file_list is %s\n",i, (*file_list+i));
}
}
}
Main()
{
Char *buffer = (char * ) malloc(200*sizeof(char));
Char **file_list= blah blah ….
/* put 200 char string in buffer*/
/*file_list is still empty call func to fill it up*/
Func(buffer,file_list);
For(i=0;i<n;i++)
printf("i= %d, file_list is %s\n",i,(*file_list+i));
}
Печать Вывод из функции:
i=0 file list is "segment one"
i=1 file list is "segment two"
....
i=n file list is "segment n"
Вывод печати из main:
i=0 file list is "segment n"
i=1 file list is "segment n"
....
i=n file list is "segment n"