心鲜旅人 发表于 2021-8-19 17:16:04

一个二维数组和指针的问题

题目是这样的:
0. 编写一个程序,接收用户的输入,并将前 9 个字符以正方形矩阵(3 * 3)的方式输出
小甲鱼的代码是这样的:
#include <stdio.h>

int main()
{
      int matrix = {0};
      int i, j;

      for (i = 0; i < 3; i++)
      {
                for (j = 0; j < 3; j++)
                {
                        matrix = getchar();
                }
      }

      for (i = 0; i < 3; i++)
      {
                for (j = 0; j < 3; j++)
                {
                        printf("%c ", matrix);
                }
                printf("\n");
      }


      return 0;
}
当我看见这代码时,我觉得太没意思了{:10_281:},根本就没有用这节课的内容,然后我就写出了这个玩意儿{:10_266:}:
#include <stdio.h>

int main()
{
        int i,j;
        char matrix = {0};//因为使用fgets函数
       
        fgets(matrix,10,stdin);
       
        int (*p) = (int (*))&matrix;//强制转换成二维数组
       
        for (i = 0;i < 3;i++)
        {
                for (j = 0;j < 3;j++)
                {
                        printf("%c ",p);
                }
                putchar('\n');
        }
       
        return 0;
}
刚写出来的时候觉得没问题{:10_279:},但是运行起来后就出bug了{:10_266:},我输入0123456789,就只会打印0 4 8 ,哪里出问题了呢?求大佬解答{:10_254:}

人造人 发表于 2021-8-19 17:28:24

#include <stdio.h>

int main()
{
      int i,j;
      //char matrix = {0};//因为使用fgets函数
      char matrix = {0};//因为使用fgets函数
      
      fgets(matrix,10,stdin);
      
      //int (*p) = (int (*))&matrix;//强制转换成二维数组
      char (*p) = (char (*))&matrix;//强制转换成二维数组
      
      for (i = 0;i < 3;i++)
      {
                for (j = 0;j < 3;j++)
                {
                        printf("%c ",p);
                }
                putchar('\n');
      }
      
      return 0;
}
页: [1]
查看完整版本: 一个二维数组和指针的问题