所以我有这个应该读取文件的函数:
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'重新宣布为另一种符号
我真的需要将它声明为来自main的char,但是......我怎么能解决这个问题呢?
答案 0 :(得分:2)
你做将它声明两次,一次作为参数列表中的char *fichIn
,然后再作为FILE *fichIn
。只需重命名其中一个。
答案 1 :(得分: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
答案 2 :(得分:1)
你有
int lerCoordenadasFich( char bairroCoord[ ][ COLUNAS ][ 50 ], int linhas,
char *fichIn ) {
即。 fichIn
然后
FILE *fichIn;
即。另一个
重命名其中一个!
答案 3 :(得分: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;
}
}