Указатель на конкретный элемент в массиве - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите разрешить один вопрос, имеется глобальный массив указателей на строки. И есть функция которая должна вернуть три указателя на конкретные строки в массиве. Как это организовать?
Листинг программы
  1. char** x_global_array; //Заполняется из файла
  2. size_t x_global_array_size;
  3. void init()//Тут массив заполняется строками
  4. {
  5. size_t stringf=0;
  6. FILE *file_name;
  7. file_name = fopen ("text.txt","r");
  8. while(fscanf(file_name, "%*[^\n]%*c") != EOF)
  9. stringf++;
  10. x_global_array_size=stringf;
  11. x_global_array = malloc(stringf* sizeof(char*) );
  12. file_name = freopen ("text.txt","r",file_name);
  13. do {
  14. stringf--;
  15. x_global_array[stringf] = malloc(128*sizeof(char));
  16. fgets ((x_global_array[stringf]),128,file_name);
  17. x_global_array[stringf][strlen(x_global_array[stringf]) - 1] = 0;
  18. }while (stringf != 0);
  19. fclose (file_name);
  20. }
  21. void test(char* x, char* y, char* z) //функция которая должна вернуть указатели
  22. {
  23. x=x_global_array[0];
  24. y=x_global_array[1];
  25. z=x_global_array[2];
  26. puts(x); //тут все выдает правильно
  27. }
  28. void main()
  29. {
  30. char* x;
  31. char* y;
  32. char* z;
  33. test (x, y ,z);
  34. puts(x); //Тут какие то кракозябры
  35. }

Решение задачи: «Указатель на конкретный элемент в массиве»

textual
Листинг программы
  1. void test(char **x, char **y, char **z)
  2. {
  3.     *x=x_global_array[0];
  4.     *y=x_global_array[1];
  5.     *z=x_global_array[2];
  6.     puts(*x);
  7. }
  8.  
  9. int main(void)
  10. {
  11.    char* x;
  12.    char* y;
  13.    char* z;
  14.    test (&x, &y ,&z);
  15.    puts(x);
  16.    return 0;
  17. }

Объяснение кода листинга программы

  1. В функции test указатель x приводится к указателю на первый элемент массива x_global_array.
  2. В функции test указатель y приводится к указателю на второй элемент массива x_global_array.
  3. В функции test указатель z приводится к указателю на третий элемент массива x_global_array.
  4. В функции main создаются три указателя: x, y, z.
  5. В функции main указатель x передается в функцию test как аргумент.
  6. В функции main указатель y передается в функцию test как аргумент.
  7. В функции main указатель z передается в функцию test как аргумент.
  8. В функции main выводится значение указателя x с помощью функции puts.
  9. В функции main возвращается 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы