我在c -
中有这段代码这是我的Room.h
文件
typedef int Room[10][10];
这是我的主要代码 -
#include"Room.h"
#include<stdio.h>
#include<stdlib.h>
int createRoom(Room * pm,char *filename)
{
FILE * input;FILE * output;
input=fopen(filename,"r");
int a;int i=0,j=0;int count;
fscanf(input,"%d",&a);
while(!feof(input))
{
pm[i][j]=a; // incompatible types when assigning to type ‘int[10]’ from type ‘int’
i++;j++;count++;
fscanf (input, "%d", &a);
}
for(i=0;i<count;i++)
{
for(j=0;j<count;j++)
printf("%d ",pm[i][j]);
printf("\n");
}
fclose(input);
return count;
}
int main()
{
char name[100];
printf("Enter file name\n");
scanf("%s",name);
Room *pm;
//pm=malloc(sizeof(Maze ));
int n=createRoom(pm,name);
return 0;
}
我在此行中收到此错误 - incompatible types when assigning to type ‘int[10]’ from type ‘int’
- pm[i][j]=a;
。为什么会这样?
答案 0 :(得分:2)
这一行
pm[i][j]=a;
需要更改为
(*pm)[i][j]=a;
更重要的是,您的代码不会为pm
分配内存。在main
中,您有:
Room *pm;
//pm=malloc(sizeof(Maze ));
int n=createRoom(pm,name);
我想知道为什么你删除了为pm
分配内存的行。您可以使用:
Room *pm;
pm=malloc(sizeof(*pm));
int n=createRoom(pm,name);
并确保释放内存。
free(pm);
或者,您可以使用:
Room pm;
int n=createRoom(&pm,name);