Поскольку вы ищете поля, которые начинаются с A
, вам нужно сравнить только первую букву letter
, поэтому ваша строка 28 становится такой:
if(records[i].letter[0] == 'A'){
И ваш компилятор сказал вам, что вы пытаетесь чтобы отобразить целое число в виде строки, это потому, что у вас есть опечатка в строке 29: number
вместо ani
, строка должна быть:
printf("%s,%d,%s\n", records[i].letter, records[i].number,records[i].ani);
Извините, я получил свой вывод, но некоторые дополнительные столбцы добавлены в мои выходные данные как «0» A, 1, тигр, 0, A1,7, собака, 0, A2,9, мышь, 0, A23,9, сумка, 0, - Abhik 2 часа a go
Он приходит с вашего scanf
вызова: в scanf
, %s
будет читать до тех пор, пока не будет найден пробел (пробел, табуляция или перевод строки). Вы должны указать scanf прекратить чтение letter
после первой найденной запятой. Для этого замените %s
на %99[^,]
. Больше объяснений здесь: Руководство по Scanf .
Таким образом, ваше чтение l oop должно выглядеть так:
while (fscanf(fp, " %99[^,],%d,%s", records[count].letter, &records[count].number, records[count].ani) == 3) {
count++;
}