2014-02-03 2 views
0

Я продолжаю получать функции гнезда, это запрещенная ошибка. Когда я пытаюсь использовать указатель, я получаю сообщение об ошибке и сообщают об ошибке, что «инициализация делает указатель из целого без трансляции». и не зная, что с этим происходит. (С использованием -ansi и -pedantic)печать 2D-символьный массив

#include <stdio.h> 
#include <stdlib.h> 


void createArt(int m) { 
int i = 0, j =0, k = 1, l = 1; 

char ascii_art[5][5] { 
    {'/','/','/','/','/'}, 
    {'/','/','/','/','/'}, 
    {'/','/','/','/','/'}, 
    {'/','/','/','/','/'}, 
    {'/','/','/','/','/'} 
}; 

for(i; i < (5 * m); i++) { 
    for(j; j < (5 * m); j++) { 
     printf("%s", ascii_art[i][j]); /* can't print out chars */ 
    } 
} 
} 

int main() { 
int multiplier = 0, m = 1; 

printf("Enter a number: "); 
scanf("%d", &multiplier); 

createArt(multiplier); 

return 0; 
} 

ответ

3

Там должно быть = после char ascii_art[5][5] и char s печатаются с %c, не %s.

Я не могу воспроизвести ошибку initialization makes pointer from integer without a cast, но у вас есть несколько неиспользуемых переменных, а первый i в for(i; i < (5 * m); i++) { не имеет никакого эффекта. Вы также можете оставить это. (То же самое для другого цикла).

По крайней мере, во втором цикле (первый тоже не повредит) вы, вероятно, захотите написать j=0, иначе внутренний цикл будет выполнен только для i=0.

Ваш код также не будет, если multiplier больше 1, потому что тогда i и j станет больше, чем 5 и вы будете пытаться получить доступ к массиву вне границ.

0

Вопросы, которые я нашел до сих пор

1) Вы отсутствующего = после декларации ascii_art

2) Вы должны заменить% s на% с в

printf("%s", ascii_art[i][j]); 

%s для печати строку, завершающуюся с \0, и для одиночного символа вам необходимо использовать %c

Также я боюсь, что вы сделаете что-то плохое с этим множителем, так как ваше условие остановки цикла - i< 5*m и m, полученное от пользователя с помощью scanf. Я вижу только два допустимых варианта для множителя в этом случае 0, 1 любое другое значение выведет из вашего массива.

Смежные вопросы