string作为c中函数的参数

Tam*_*ero 0 c string function

我正在创建一个函数,用于根据文本文件的行和字段编号从文本文件中检索整数.

代码如下所示,主要问题是我遇到函数参数问题.

我在它上面有一个错误标志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)

Frx*_*rem 5

你的问题在于:

if (TARGETLINE <= NEWLINE_COUNT)
{
    int j, value;
    // ...
}
return value;
Run Code Online (Sandbox Code Playgroud)

请注意,在C(和许多其他语言)中,变量只在它们声明的代码块中"存在".因此,如果在代码块(例如if,whilefor代码块)中声明变量,那么变量将只是当程序离开这段代码时不存在.

这里的简单解决方案是int value 您输入if之前声明:

int value;
if (TARGETLINE <= NEWLINE_COUNT)
{
    int j;
    // ...
}
return value;
Run Code Online (Sandbox Code Playgroud)