#c #arrays #2d
#c #массивы #2d
Вопрос:
Как сказано в названии, у меня есть функция «load», которая возвращает структуру, содержащую 2 int и массив символов. Этот массив находится в 1D и выглядит как : [################ ### $ $ ### # .# ### . #.@ ###$# * ### ###############] И я хотел бы распечатать его как :
##########
###### ##
# $ $ ##
# # .# ##
# . #.@ #
##$# * #
## ######
##########
зная, что ширина здесь равна 10.
Итак, мой вопрос в том, как через каждые 10 символов удается возвращаться к следующей строке …?
Вот что я написал до сих пор :
void print_map(map map_loaded){
char *p=map_loaded.p_char;
int height=map_loaded.height;
for(int i=0; i<height; i ){
printf("%c", *p[i]);
}
Как вы можете видеть, я просто знаю, как читать каждый символ, но понятия не имею, как вернуться к строке…
Я был бы очень признателен, если бы кто-нибудь прочитал мой код и оставил мне свой отзыв… Заранее спасибо!
Комментарии:
1. Вы должны показать, как определена ваша
map
структура, и объяснить, что означают поля. Например: Являетсяmap_loaded.height
количеством строк в печатной таблице?map_loaded.p_char
Завершается нулем? Какие еще элементы данных есть вmap
структуре?2. Выведите ‘n’ для перевода строки.
3.
*p[i]
это плохо! в любом случае, вы смотрите на это…*p
имеет типchar
; вы не можете индексировать символ …p[i]
имеет типchar
; вы не можете разыменовать char.4. @pmg можете ли вы подробнее рассказать о том, в чем проблема с разыменованием символа. Я раньше не слышал об этой проблеме.
5. @Patrick: как вы думаете
*(42)
(разыменование целого числа 42) является законным? Как насчет*("foo")
(разыменования (строки, преобразованной в) указатель)? Или*("foo"[2])
(разыменовать символ)?
Ответ №1:
Поскольку все, что вам нужно, это новая строка после каждых 10 символов, просто проверьте, напечатали ли вы 10 символов с момента последнего добавления новой строки.
void print_map(map map_loaded){
char *p=map_loaded.p_char;
int height=map_loaded.height;
for(int i=0; i<height; i ){
printf("%c", p[i]);
if( (i 1)%10==0)
printf("n");
}
Комментарии:
1.
*p[i]
это плохо! в любом случае, вы смотрите на это…*p
имеет типchar
; вы не можете индексировать символ …p[i]
имеет типchar
; вы не можете разыменовать char.