Member 13057504 Ответов: 1

Как изменить значение в позиции englishbooks[2]? Отображение значения мусора через приведенный ниже код:


#include<stdio.h>
int main()
{char *title[]={"tale of 2 cities","wuthering heights","don quixote","odyssey","moby dick","hamlet","gulliver travel"};
    char**bestbooks[3];
    char**englishbooks[4];
    bestbooks[0]=&title[0];
    bestbooks[1]=&title[3];
    bestbooks[2]=&title[5];
    englishbooks[0]=&title[0];
    englishbooks[1]=&title[1];
    englishbooks[2]=&title[5];
    englishbooks[3]=&title[6];
    printf("%s\n",*englishbooks[2]);
    *englishbooks[2]="changed";
    printf("%s\n",englishbooks[2]);
return 0;
}


Что я уже пробовал:

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

CHill60

Вы уже дважды публиковали этот вопрос, и теперь у вас есть решение для репоста. Пожалуйста, удалите эту копию

1 Ответов

Рейтинг:
4

OriginalGriff

Вы объявляете английские книги как массив значений указателя на указатель на символ:

char**englishbooks[4];
и затем вы используете их соответствующим образом:
printf("%s\n",*englishbooks[2]);
*englishbooks[2]="changed";
За исключением последнего printf, где вы забыли разыменовать указатель:
printf("%s\n",englishbooks[2]);

Измените его на
printf("%s\n",*englishbooks[2]);
И все будет хорошо.


CPallini

5.