c - 打印二维字符数组,数字代表开头的行

标签 c arrays function pointers multidimensional-array

以下函数:

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/

相关文章:

c - 在 C 中使用数组显示模式

javascript - 不调用内部函数

C++ char 数组与数组进行比较并分配单独的值;

java - 如何获取 'Array of JTextField' 的值并将其存储在整数数组中?

php - 如何在单个数组中显示更多数量的数组结果?

python - 嵌套函数的真实示例

javascript - 类型错误: "TypeError: function name is not a function at HTMLButtonElement.onclick (/:2:54)"

C语言根据用户输入的位数确定数组的长度

c - 使用 extern 和 #including 头文件有什么区别?

c - 为什么可以调用稍后在 C 中声明的函数?