【发布时间】:2014-04-10 21:47:25
【问题描述】:
我正在制作一个函数,用于根据其行号和字段号从文本文件中检索整数。
代码如下所示,主要问题是函数参数有问题。
我在return value; 有一个错误标志,上面写着:value 未声明
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* define function */
int getlinefieldint(const char FILENAME[], int TARGETLINE, int TARGETFIELD, int LINESIZE);
int main ()
{
static const char FILENAMEint[] = "resultdata1M";
int linea=1000;
int campo=2;
int tamanolinea=128;
int value;
value=getlinefieldint(FILENAMEint,linea,campo,tamanolinea);
printf("%d",value);
return 0;
}
/* declare function */
int getlinefieldint(const char FILENAME[], int TARGETLINE, int TARGETFIELD, int LINESIZE)
{
FILE *ARCHIVO;
ARCHIVO = fopen ( FILENAME, "r" );
int C,QUERY_GENE_NUM;
unsigned int NEWLINE_COUNT = 0;
while ( (C=fgetc(ARCHIVO)) != EOF )
{
if ( C == '\n' )
{
NEWLINE_COUNT++;
}
}
printf("La cantidad de genes a evaluar es: %d\n",QUERY_GENE_NUM);
rewind(ARCHIVO);
if (TARGETLINE <= NEWLINE_COUNT)
{
int j,value;
int stoplimitline;
char LINE[LINESIZE];
char *BUFFER;
char *TOKEN_SEPARA;
char *RETURNPTR;
BUFFER=(char *)malloc(24 * sizeof(char));
RETURNPTR=(char *)malloc(24 * sizeof(char));
while (stoplimitline < TARGETLINE)
{
fgets(LINE, sizeof LINE, ARCHIVO);
puts(LINE);
}
TOKEN_SEPARA = strtok(LINE, " ");
for (j=1;j<=TARGETFIELD;j++)
{
if(j!= TARGETFIELD)
{
BUFFER=strcpy(RETURNPTR,TOKEN_SEPARA);
puts(BUFFER);
TOKEN_SEPARA = strtok(NULL, " "); /* hacer que brinque el puntero al siguiente patron */
}
else
{
value=atoi(BUFFER);
}
}
}
return value ;
}
【问题讨论】:
-
那是因为它是在块内声明的,因此范围有限,而不是在函数代码的开头。因此,
return语句无法访问它。