Сканирование строки и целого числа из файла в C - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь поместить значения из файла в переменные.У меня есть файл fruits.txt со следующими данными.

bananas,5
apples,3
kiwi,7

Запятая отделяет название фрукта от цены.Моя цель - поместить имя в строку с именем fruit, а цену в int с названием price, переместить указатель файла на следующую строку, а затем напечатать его.

FILE * fptr = fopen("fruit.txt", "r");
char fruit[10];
int price = 0;

fscanf(fptr, "%s,%d\n", fruit, &price);
printf("%s,%d\n", fruit, price);

fclose(fptr);

Это то, что у меня такдалеко.Тем не менее, мой вывод bananas,5,0.Кажется, что он делает первую часть правильно, но затем добавляет другую, 0.Кто-нибудь знает как это исправить?

1 Ответ

0 голосов
/ 07 октября 2018

мой вывод «бананы, 5,0».Похоже, что он выполняет первую часть правильно, но затем добавляет еще одну, 0.

, потому что %s тоже съедает ваш разделитель (,), следовательно, полный bananas,5 в fruitпеременная.

Если вы проверили возвращаемое значение из fscanf, оно просто возвращало 1 и не считывало %d в price переменную.

Решение:

Вы можете просто использовать [^,] для чтения строки, используя , в качестве разделителя, и поместить fscanf в while цикл, возвращающий значение для 2.

Пример кода.

FILE * fptr = fopen("fruit.txt", "r");
char fruit[10];
int price = 0;

while(fscanf(fptr, "%9[^,],%d%*[\n]", fruit, &price) == 2)
    printf("%s,%d\n", fruit, price);

fclose(fptr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...