【发布时间】:2019-03-06 17:56:42
【问题描述】:
正如标题中所说,我有一个函数“load”,它返回一个包含 2 个 int 和一个字符数组的结构。这个数组是一维的,看起来像: [################ ### $ $ ### # .# ### 。 #.@ ###$# * ### ################] 我想将其打印为:
##########
###### ##
# $ $ ##
# # .# ##
# . #.@ #
##$# * #
## ######
##########
知道这里的宽度是 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]);
}
如您所见,我只知道如何阅读每个字符,但我不知道如何回到行... 如果有人能阅读我的代码并给我他/她的反馈,我将不胜感激......提前致谢!
【问题讨论】:
-
您应该展示您的
map结构是如何定义的,并解释这些字段的含义。例如:map_loaded.height是打印网格中的行数吗?map_loaded.p_char是空终止的吗?map结构中还有哪些其他数据成员? -
打印 '\n' 换行。
-
*p[i]不好! 不管你怎么看...*p的类型为char;你不能索引一个字符...p[i]的类型为char;你不能取消引用一个字符。 -
@pmg 您能否详细说明取消引用字符的问题所在。我以前没听说过这是个问题。
-
@Patrick:你认为
*(42)(取消引用整数42)合法吗?*("foo")(取消引用(字符串转换为)指针)呢?还是*("foo"[2])(取消引用一个字符)?