以下函数:
char **fill(char **array, int *size) {
int i,j;
for ( i = 0; i < *size; i++ ) {
for (j = 0; j < *size; j++ ) {
array[i][j] = '-';
}
}
return array;
}
对于输入:5
给出输出:
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
如何编辑代码以获得这样的输出:
0 - - - - -
1 - - - - -
2 - - - - -
3 - - - - -
4 - - - - -
我函数中的“数组”是给定大小 n 的二维字符数组。当我输入 n 时,我尝试为 n + 1 个字符而不是 n 分配每一行,并使函数如下所示:
char **fill(char **array, int *size) {
int i,j;
for ( i = 0; i < *size; i++ ) {
array[i][0] = 'i';
for (j = 1; j < ( *size + 1 ); j++ ) {
array[i][j] = '-';
}
}
return array;
}
但它不起作用。
输入:5
输出:
i - - - - -
i - - - - -
i - - - - -
i - - - - -
i - - - - -
最佳答案
您正在打印字符“i”,但您必须打印从“0”到“9”的字符:
for ( i = 0; i < *size; i++ ) {
array[i][0] = '0' + i; // <-
for (j = 1; j < ( *size + 1 ); j++ ) {
array[i][j] = '-';
}
}
'0'到'9'的字符有48到57的ASCII码。'0'+i
表示ASCII码为48+i
的字符。上面的代码从0到9有效。如果i==10
,它打印':',因为':'是ASCII码58(48+10)的字符。
参见 ASCII table和问题Char - ASCII relation .
关于c - 打印二维字符数组,数字代表开头的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34570028/