如果我想按行
打印char boo[] =
"abcd"
"efgh"
"ijkl"
"mnop";
我会去
for(i = 0; i < 4; i++)
{
char row[] = "";
for(j = 0; j < 4; j+)
printf("%c", *(boo++))
putchar('\n');
puts(row);
}
我的问题是如何打印列,以便我得到
aeim
bfjn
cgko
dhlp
答案 0 :(得分:2)
因为它看起来像是一个家庭作业,我只想给你一个线索。
您的boo
不是字符串数组 - 预处理器将所有相邻字符串文字粘合到一个字符串中,因此您有一个字符串“abcdefghijklmnop
”
您需要将其声明为
char *boo[] = {"abcd", "efgh", ...};
答案 1 :(得分:2)
其他解决方案涉及修改boo,你说这是违反规则,这里是一个简单的解决方案。只需使用一个内循环,它相对于外循环打印每个第4个字符。
int main() {
int i, j;
for(i = 0; i < 4; ++i) {
for(j = 0; j < 4; ++j) {
putchar(boo[i + j * 4]);
}
putchar('\n');
}
}
以这种方式想到这一点,这是有效地手动处理嘘声,好像它是一个二维数组的字符。由于用2d索引1d数组的公式是(x + y * width),你可以想象我是x-coord而j是y-coord。
答案 2 :(得分:1)
#include <stdio.h>
int main (int argc, char* argv[])
{
char *boo[] = {"abcd", "efgh", "ijkl", "mnop"};
int i, j;
for(i = 0; i < 4; i++) {
for(j = 0; j < 4; j++)
printf("%c", boo[j][i]);
printf("\n");
}
}
-m