Я пытаюсь прочитать файл и распечатать записи, в которых перемычка превысила расстояние, предоставленное пользователем, но поиск возвращает только первую строку в файле, и это все, Я знаю, что в логике есть что-то не так, но я не могу погладить ее.Поиск, возвращающий только первый результат в структуре C
#include<stdio.h>
#include<string.h>
typedef struct {
char fname[30];
char lname[30];
char nationality [30];
double distance;
}Player;
void print(Player p) {
printf("%s %s %s %f \n", p.fname, p.lname, p.nationality, p.distance);
}
int search(double distance, Player allPlayers[], int max){
int i=0;
for(i=0; i<max; i++){
if(distance > allPlayers[i].distance){
return i;
}
return -1;
}
}
void load (char filename[10], Player players[]){
char tempfName [30];
char templName [30];
char tempNationality [30];
double tmpdistance;
FILE * input=fopen(filename,"r+");
if(input==NULL)
printf("Error found in opening the file\n");
else {
printf("The data are loaded successfully.\n");
int counter = 0;
while(!feof(input)){
strcpy(tempfName," ");
fscanf(input, "%s %s %s %f",tempfName, templName, tempNationality, &tmpdistance);
if(strcmp(tempfName, " ") !=0){
strcpy(players[counter].fname, tempfName);
strcpy(players[counter].lname, templName);
strcpy(players[counter].nationality, tempNationality);
players[counter].distance = tmpdistance;
counter++;
}
}
fclose(input);
}
}
int main (int argc, char *argv[]){
Player players2[40];
char myFileName[10] ="jump.txt";
load(myFileName, players2);
double tmpdistance;
printf("Please enter the distance threshold: ");
scanf("%lf", &tmpdistance);
printf("The jumpers exceeded 8.10 m are: \n");
int index = -1;
index = search(tmpdistance,players2,40);
if(index!=-1)
print(players2[index]);
else
printf("NOT Found! \n");
return 0;
}
некоторые выборочные данные из файла, который я пытаюсь прочитать:
Arsen Sargsyan Армения 7,62
Болеслав Схиртладзе Грузия 7,26
Кристиан Райф Германия 7,92
Кристофер Томлинсон Great_Britain 8.06
'return -1;' перейти к for-loop. – BLUEPIXY
Используйте '% lf' вместо'% f' 'fscanf' для' double' – BLUEPIXY