我正在创建一个函数,用于根据文本文件的行和字段编号从文本文件中检索整数.
代码如下所示,主要问题是我遇到函数参数问题.
我在它上面有一个错误标志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 ;
}
Run Code Online (Sandbox Code Playgroud)
你的问题在于:
if (TARGETLINE <= NEWLINE_COUNT)
{
int j, value;
// ...
}
return value;
Run Code Online (Sandbox Code Playgroud)
请注意,在C(和许多其他语言)中,变量只在它们声明的代码块中"存在".因此,如果在代码块(例如if,while或for代码块)中声明变量,那么变量将只是当程序离开这段代码时不存在.
这里的简单解决方案是int value 在您输入if块之前声明:
int value;
if (TARGETLINE <= NEWLINE_COUNT)
{
int j;
// ...
}
return value;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |