Указатель на конкретный элемент в массиве - 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, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д