zjhnz 发表于 2017-12-1 13:28:39

S1E24 动动手 第0题

题目是接收用户的输入 并将用户输入的前九个字符于3*3矩阵输出。

下面是我的代码,求助    编译时 出现警告 initialization from incompatible pointer type

问题是出在char (*p)=&str;上

求 为什么会出这个警告 ?怎么改? 谢谢!

#include <stdio.h>
#define MAX 100

int main()
{
        char str;
        int i,j;
        char ch;
        char (*p)=&str;
        while((ch=getchar())!='\n')
        {
                str=ch;
                i++;
               
        }
       
        for(i=0;i<3;i++)
        {
                for(j=0;j<3;j++)
                {
                        printf("%c ",*(*(p+i)+j));
                }
                printf("\n");
        }
       
}




BngThea 发表于 2017-12-1 13:52:20

本帖最后由 BngThea 于 2017-12-1 14:18 编辑

为什么拿一个数组指针指向一个一维数组?
还有一个地方
str = ch;
这一句明显不对,应该是将ch的值存到数组里面去,比如 str = ch;


根据你的代码给一个修改的版本:
#include <stdio.h>
#include <stdlib.h>

#define MAX 100

int main()
{
        char str = {'\0'};
        int k = 0;
        char ch;
        while((ch=getchar())!='\n')
        {
                str = ch;
                k++;
        }

        for(k = 0; k < 9; k++)
        {
                printf("%c ",str);
                if ((k + 1) % 3 == 0)
                {
                        printf("\n");
                }               
        }

        system("pause");
        return 0;
}

qq1242009750 发表于 2017-12-2 01:02:46

本帖最后由 qq1242009750 于 2017-12-2 01:03 编辑

错误出在了输入数组str的索引上面

int main()
{
      char str;
      int i = 0,j;
      char ch;
      char (*p)=&str;
      while((ch=getchar())!='\n')
      {
                str=ch;
                i++;

      }

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

zjhnz 发表于 2017-12-2 17:03:12

谢谢各位
页: [1]
查看完整版本: S1E24 动动手 第0题