2013-12-13 19 views
0

所以我有这个功能是应该读取文件:加载文件与字符指针,C

int lerCoordenadasFich(char bairroCoord[ ][ COLUNAS ][ 50 ], int linhas, 
         char *fichIn) { 

    int contaLinhas; 
    int contaColunas; 
    FILE *fichIn; 

    if((fichIn = fopen("bairro-coordenadas.txt", "r")) == NULL) { 
     printf("Nao foi possivel abrir o ficheiro.\n"); 
     return 0; 
    } 
    else { 
     for(contaLinhas=0; contaLinhas < linhas; contaLinhas++) { 
     for(contaColunas=0; contaColunas < COLUNAS; contaColunas++) { 
      fscanf(fichIn,"%s", bairroCoord[contaLinhas][contaColunas]); 
     } 
     } 

     fclose(fichIn); 
     return 1; 
    } 
} 

但我得到的错误:

“fichIn”重新声明为不同类型的的符号

我真的需要将它声明为来自主要的字符,虽然...我怎样才能解决这个问题?

+0

'FILE * fichIn只需重命名;'到别的东西。 – user3007735

回答

2

它宣布两次,一次为char *fichIn在参数列表中,然后为FILE *fichIn。只需重命名一个或另一个。

1

你有

int lerCoordenadasFich(char bairroCoord[ ][ COLUNAS ][ 50 ], int linhas, 
         char *fichIn) { 

fichIn

然后

FILE *fichIn; 

即另外一个

重命名其中的一个!

2

因为你的函数有两个名为finchIn的变量。一个位于你的函数参数中,另一个是FILE * fichIn。

gcc -g -o q.o -c q.c 
q.c: In function ‘lerCoordenadasFich’: 
q.c:10:10: error: ‘fichIn’ redeclared as different kind of symbol 
q.c:6:31: note: previous definition of ‘fichIn’ was here 
0

你说你需要传递文件的名字 - 但你已经在你的代码中硬连接了文件名。解决这两个问题,你需要改变的代码如下(我已经介绍了新的变数fp,并更新了fopen功能):

int lerCoordenadasFich(char bairroCoord[ ][ COLUNAS ][ 50 ], int linhas, 
        char *fichIn) { 

int contaLinhas; 
int contaColunas; 
FILE *fp; 

if((fp = fopen(fichIn, "r")) == NULL) { 
    printf("Nao foi possivel abrir o ficheiro.\n"); 
    return 0; 
    } 
    else { 
     for(contaLinhas=0; contaLinhas < linhas; contaLinhas++) { 
     for(contaColunas=0; contaColunas < COLUNAS; contaColunas++) { 
      fscanf(fp, "%s", bairroCoord[contaLinhas][contaColunas]); 
     } 
     } 

     fclose(fp); 
     return 1; 
    } 
}