Наконец-то я нашел решение проблемы с этим кодом (спасибо другим ответам).Код ищет слово и возвращает следующее значение после слова.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int search_word_int( char *word , FILE *file , int *step )
{
fseek(file, 0, SEEK_SET);
char dummy[strlen(word)+1];
int step_ = step;
int variable = 0;
while((fgets(dummy, strlen(word)+1 , file)) != NULL )
{
if(strncmp(dummy, word, strlen(word)+1 ) == 0 )
{
for (int i = 0 ; i < step_ + 1 ; i++)
fscanf(file, "%d" , &variable );
printf("%s = %d\n",word,variable);
break;
}
}
return(variable);
}
float search_word_float( char *word , FILE *file , int *step )
{
fseek(file, 0, SEEK_SET);
char dummy[strlen(word)+1];
int step_ = step;
float variable = 0;
while( (fgets( dummy , strlen(word)+1 , file )) != NULL )
{
if( strncmp(dummy, word, strlen(word)+1 ) == 0 )
{
for (int i = 0 ; i < step_ + 1 ; i++)
fscanf( file , "%f" , &variable );
printf("%s = %f\n",word,variable);
break;
}
}
return(variable);
}
int main()
{
FILE *file;
file = fopen("vars.txt","r");
int var1 = search_word_int( "var1" , file , 1 );
float var2 = search_word_float( "var2" , file , 2 );
fclose(file);
return(0);
}
Если текстовый файл("vars.txt"):
var1
10
var2 2.3
4.5
Тогда результат:
var1 = 10
var2 = 4.5
Пробелы, символы новой строки и табуляции игнорируются.