Указатель на конкретный элемент в массиве - C (СИ)
Формулировка задачи:
Помогите разрешить один вопрос, имеется глобальный массив указателей на строки. И есть функция которая должна вернуть три указателя на конкретные строки в массиве. Как это организовать?
char** x_global_array; //Заполняется из файла size_t x_global_array_size; void init()//Тут массив заполняется строками { size_t stringf=0; FILE *file_name; file_name = fopen ("text.txt","r"); while(fscanf(file_name, "%*[^\n]%*c") != EOF) stringf++; x_global_array_size=stringf; x_global_array = malloc(stringf* sizeof(char*) ); file_name = freopen ("text.txt","r",file_name); do { stringf--; x_global_array[stringf] = malloc(128*sizeof(char)); fgets ((x_global_array[stringf]),128,file_name); x_global_array[stringf][strlen(x_global_array[stringf]) - 1] = 0; }while (stringf != 0); fclose (file_name); } void test(char* x, char* y, char* z) //функция которая должна вернуть указатели { x=x_global_array[0]; y=x_global_array[1]; z=x_global_array[2]; puts(x); //тут все выдает правильно } void main() { char* x; char* y; char* z; test (x, y ,z); puts(x); //Тут какие то кракозябры }
Решение задачи: «Указатель на конкретный элемент в массиве»
textual
Листинг программы
void test(char **x, char **y, char **z) { *x=x_global_array[0]; *y=x_global_array[1]; *z=x_global_array[2]; puts(*x); } int main(void) { char* x; char* y; char* z; test (&x, &y ,&z); puts(x); return 0; }
Объяснение кода листинга программы
- В функции
test
указательx
приводится к указателю на первый элемент массиваx_global_array
. - В функции
test
указательy
приводится к указателю на второй элемент массиваx_global_array
. - В функции
test
указательz
приводится к указателю на третий элемент массиваx_global_array
. - В функции
main
создаются три указателя:x
,y
,z
. - В функции
main
указательx
передается в функциюtest
как аргумент. - В функции
main
указательy
передается в функциюtest
как аргумент. - В функции
main
указательz
передается в функциюtest
как аргумент. - В функции
main
выводится значение указателяx
с помощью функцииputs
. - В функции
main
возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д