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 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: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;
} 谢谢各位
页:
[1]