Member 13057504 Ответов: 1

Последний printf ("%s", *title[5]); не приходит в вывод, почему?


#include<stdio.h>
int main()
{
char title[]={"tale of 2 cities","wuthering heights","don quixote","odyssey","moby dick","hamlet","gulliver travel"};
charbestbooks[3];
charenglishbooks[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]);
printf("%s",*title[5]);
return 0;
}


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

последний printf также должен отображать вывод: "изменено".

1 Ответов

Рейтинг:
10

OriginalGriff

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

char title[]={"tale of 2 cities","wuthering heights","don quixote","odyssey","moby dick","hamlet","gulliver travel"};
Это неправильно: это массив символов - или строка - и вы пытаетесь установить его в любой массив строк. Это должно быть:
char* title[]={"tale of 2 cities","wuthering heights","don quixote","odyssey","moby dick","hamlet","gulliver travel"};

Но тогда ваш printf все равно не будет работать:
printf("%s",*title[5]);
потому что title-это массив указателей на символы (или массив строк, если хотите), и поэтому title[5] - это указатель на символ или строку, а *title[5] - это символ, но вы говорите printf, что это указатель, так что в лучшем случае вы получите ошибку сегментации.
Попробуй
printf("%s",title[5]);
и, пожалуйста, внимательно посмотрите на то, что вы делаете, и попробуйте перевести код на английский язык в своей голове - становится довольно очевидно, что вы передаете.