Поиск в CSV-файле в C

Я делаю проект на C, в котором мне нужно искать в CSV-файле. Однако в программе есть некоторые ошибки, и я не могу их найти. Независимо от города я вхожу (существующий в файле), единственное, что появляется, это «ERROR». Может кто-то помочь мне, пожалуйста? Спасибо! (Извините за мой английский, это не мой первый язык …)

int search_date(){ char tem_max[10]; char tem_min[10]; char humidity[10]; char pressure[10]; char town[100]; char city[100]; int i=0; printf("Enter the name of the town: "); scanf ("%[^\n]%*c", town); FILE *stream = fopen("cities2.csv", "r"); char line[1024]; while (fgets(line, 1024, stream)) { char *tmp = strdup(line); if (i > 0) { strcpy(city, strtok(tmp, ",\n")); strcpy(tem_max, strtok(NULL, ",")); strcpy(tem_min, strtok(NULL, ",")); strcpy(humidity, strtok(NULL, ",")); strcpy(pressure, strtok(NULL, ",")); if (strcmp(city, town) == 0) { printf("Town - Maximum temperature - Minimum temperature - Humidity - Pressure\n"); printf("%s - %s - %s - %s - %s\n",city, tem_max, tem_min, humidity, pressure); } i++; free(tmp); } else { printf("ERROR"); } fclose(stream); } 

}

Вы инициализируете i до 0 , затем проверяете, больше ли оно, чем 0 прежде чем вы его увеличите. Глядя на ваш код, я действительно не знаю, для чего я цель. Даже если первый тест проходит, все, что вы делаете, – это увеличение i и чтение. Может быть, вы пытаетесь пропустить чтение первой строки файла?

 int search_date(){ char tem_max[10]; char tem_min[10]; char humidity[10]; char pressure[10]; char town[100]; char city[100]; int i=0; // <--- i is 0 printf("Enter the name of the town: "); scanf ("%[^\n]%*c", town); FILE *stream = fopen("cities2.csv", "r"); char line[1024]; while (fgets(line, 1024, stream)) { char *tmp = strdup(line); if (i > 0) { // <--- i is still 0 strcpy(city, strtok(tmp, ",\n")); strcpy(tem_max, strtok(NULL, ",")); strcpy(tem_min, strtok(NULL, ",")); strcpy(humidity, strtok(NULL, ",")); strcpy(pressure, strtok(NULL, ",")); if (strcmp(city, town) == 0) { printf("Town - Maximum temperature - Minimum temperature - Humidity - Pressure\n"); printf("%s - %s - %s - %s - %s\n",city, tem_max, tem_min, humidity, pressure); } i++; // <--- now you do i++ free(tmp); } else { printf("ERROR"); } fclose(stream); } 

Привет, Стивен Доки прав. Уже он указал на вашу ошибку. Я только что изменил ваш код, чтобы он работал на вас.

 int search_date(){ char tem_max[10]; char tem_min[10]; char humidity[10]; char pressure[10]; char town[100]; char city[100]; int i=1; // <--- now i is 1 printf("Enter the name of the town: "); scanf ("%[^\n]%*c", town); FILE *stream = fopen("cities2.csv", "r"); char line[1024]; while (fgets(line, 1024, stream)) { char *tmp = strdup(line); if (i > 0) { // <--- i is now > 0 strcpy(city, strtok(tmp, ",\n")); strcpy(tem_max, strtok(NULL, ",")); strcpy(tem_min, strtok(NULL, ",")); strcpy(humidity, strtok(NULL, ",")); strcpy(pressure, strtok(NULL, ",")); if (strcmp(city, town) == 0) { printf("Town - Maximum temperature - Minimum temperature - Humidity - Pressure\n"); printf("%s - %s - %s - %s - %s\n",city, tem_max, tem_min, humidity, pressure); } i++; // <--- now you do i++ free(tmp); } else { printf("ERROR"); } fclose(stream); }