-1
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
    int row, col, i, j, n;
    char U;
    char **board;

    printf("Enter number of dimensions: ");
    scanf("%d",&n);
    row = n;
    col = n;

    board = malloc(row*sizeof(char *));
    for(i=0;i<row;i++)
    {       
        board[i] = malloc(col*sizeof(char));
        if(board[i] == NULL)
        {
            printf("Out of memory");
            return 0;
        }
    }

    for(i = 0; i<n; i++)
    {
        for(j = 0; j<n; j++)
        {
            board [i][j] = U;
        }
    }

    for(i = 0; i<n; i++)
    {
        for(j = 0; j<n; j++)
        {
            printf("%c",board[i][j]);
        }
    }

}

我刚刚学习了malloc,我只知道stdio.h函数、指针、数组、循环、制作自己的函数和math.h函数。我不知道 realloc 或 calloc,我能做些什么让它打印出 nxn 矩阵中的字符 U,用户输入 n。(使用卡特的 C 书)

4

2 回答 2

1

编译时出现警告:

warning: ‘U’ may be used uninitialized in this function [-Wuninitialized]

另外,请注意sizeof(char)始终为 1

失败时使用exit(EXIT_FAILURE)而不是return 0malloc

于 2013-11-04T21:18:52.473 回答
1
for(i = 0; i<n; i++)
    {
        for(j = 0; j<n; j++)
        {
            board [i][j] = U;
        }
    }

应该是这样的

for(i = 0; i<n; i++)
    {
        for(j = 0; j<n; j++)
        {
            board [i][j] = 'U';
        }
    }

您缺少 char 的引号。

于 2013-11-04T21:19:59.083 回答