Я работаю над упражнением в течение последних нескольких дней, и я имея это предупреждение (как следует из названия). Я пробовал кучу вещей, но я действительно не знаю, как точно это исправить. Я не умею программировать, поэтому есть ошибки. Ниже приведены Структуры, я использую (которые не могут быть изменены, потому что это, как они даны):Ошибка C: формат '% s' ожидает аргумент типа 'char *', но аргумент 2 имеет тип 'char (*) [100]'
typedef struct bookR* book;
struct bookR{
char author[MAXSTRING];
enum genres{fiction,scientific,politics};
int id;
char review[MAXLINES][MAXSTRING];
};
typedef struct nodeR* node;
struct nodeR{
book b;
node next;
};
typedef struct listR* list;
struct listR{
node head, tail;
int size;
};
А вот часть кода, где происходит проблема:
void addBook(book b, list bList){
char author [MAXSTRING];
int id;
char review [MAXSTRING][MAXLINES];
printf ("Give the author,`enter code here` id and review of the new book respectively");
scanf("%s",author);
scanf("%d",&id);
scanf("%s",review);
node k=(node)malloc(sizeof(struct nodeR));
assert(k);
k->next=NULL;
strcpy(k->b->author,author);
k->b->id=id;
strcpy(k->b->review,review[MAXSTRING]);}
И это предупреждение, которое я получаю:
warning: format '%s' expects argument of type 'char *' but argument 2 has type 'char (*)[100]' [-Wformat=]
scanf("%s",review);
warining:passing argument 1 of 'strcpy' from incompatible pointer tupe [-Wincompatible-pointer-types]
strcpy(k->b->review,review[MAXSTRING]);
Любая помощь очень ценится. Спасибо за ваше время и извините за длинный пост.
'зсап ("% s", обзор)' -> 'зсап ("% s", обзор [индекс])' – LPs
Я думаю, что решение кроется в самом предупреждении. – SKD
'strcpy (k-> b-> review, review [MAXSTRING]);' -> 'strcpy (k-> b-> review [index, review [MAXSTRING-1]);' – LPs