Язык C: Поиск текстового файла для «var» и сохранить следующую строку в качестве значения - PullRequest
0 голосов
/ 12 декабря 2018

Как мне выполнить следующую задачу:

file = fopen("filename","r");
search_word_int( "var1" , file , 1 );
search_word_int( "var2" , file , 1 );
...
fclose(file);

Я использовал:

int search_word_int( char *word , FILE *file , int *step )
{
    char dummy[256];
    int variable = 0, step_ = step;
    while( (fgets( dummy , 256 , file )) != NULL )
    {
        if( strcmp( dummy , word ) != 0 )
        {
            for (int i = 0 ; i < step_ + 1 ; i++)
                fscanf( file , "%d" , &variable );
            printf("%s is found = %d\n",word,variable);
            return(variable);
        }
    }
}

в качестве функции поиска , но, похоже, fgets непоиск в начале файла, вместо этого он продолжает получать следующие строки после последнего вызова!

1 Ответ

0 голосов
/ 12 декабря 2018

Каждый ФАЙЛ имеет позицию файла или смещение, и когда вы выполняете fgets (), позиция перемещается вперед.Если вы хотите прочитать с начала файла, вставьте следующую строку в начало вашей функции search_word_int (), чтобы переместить смещение файла в начало файла:

fseek(file, 0, SEEK_SET);
...