Я пытаюсь напечатать простой 2D массив строки взять строки из пользователя и распечатать егоC: формат «% s» ожидает аргумент типа «символ *», но аргумент 2 имеет тип «символ **»
void in(char* n[3][2]);
void show_name()
{
char* n[3][2];
in(n);
unsigned int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
printf("%s ", &n[i][j]);
printf("\n");
}
}
int main(void)
{
show_name();
return 0;
}
void in(char* n[3][2])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
scanf("%s",&n[i][j]);
printf("\n");
}
он работает правильно, но у меня есть предупреждение сказать:
предупреждение: формат '% s' ожидает аргумент типа 'символ *', но аргумент 2 имеет тип 'символ **' [-Wformat] |
я искал причины я обнаружил, что проблема в %s
не нужно для адреса когда я удалить &
оператора нет предупреждения там `но код не работает правильно
Я думаю, что предупреждение должно быть довольно очевидно. –
не нужно char * n [3] [3] в show_name(), используйте void in (char ** n) и вызывайте его как в (n); – Subinoy
Здесь много неправильного: * вы не проверяете размер ввода, что делает возможным пересылку буфера * вы, скорее всего, захотите сканировать в 3 строки, но вызовите scanf 6 раз. – mfuchs