使用typedef时出错

时间:2015-02-17 06:25:08

标签: c

我在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;。为什么会这样?

1 个答案:

答案 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);