2016-08-19 4 views
0

У меня есть трудности с работой с файлами на C. Я уже знаю, как читать и записывать файлы на C, но все, что я могу сделать, это просто читать и добавлять. Если я хочу читать строки строк и преобразовывать их в числа (int), как бы я это сделал?Преобразование строки из текстового файла в числа

, например:

mytextfile.txt содержит следующие данные:

12345 30 15 
2111 9 20 
    321 17 7 

теперь для каждой строки, я хочу, чтобы использовать первый номер в качестве переменной для цены и следующий номер, как количество и последний номер как скидка. Моя проблема заключается в том, как я буду хранить три числа в переменной, чтобы использовать их как целые числа (или строку)?

Мой вывод должен быть вычисленная сумма на основе цены, количества и скидки указаны вниз одно значение (результат) в каждой строке ...

+3

[Параметр 'fscanf' функция] (http://en.cppreference.com/w/c/io/fscanf) не работает для тебя? Что еще вы пробовали? Пожалуйста, [прочитайте о том, как задавать хорошие вопросы] (http://stackoverflow.com/help/how-to-ask), и узнайте, как создать [Минимальный, Полный и Подтверждаемый пример] (http: // stackoverflow. ком/помощь/mcve). –

+0

Также посмотрите на strtok для разделения разделителей. –

+1

Я бы читал строки за строкой, а затем использовал 'sscanf (linebuf,«% d% d% d », & price, & quantity, & discount);' чтобы получить числа. –

ответ

0
#define MAXLINE 80 

typedef struct { 
    double cost, qty, disc; 
} item; 

int readitem(FILE *fp, item *itm) 
{ 
    char buf[MAXLINE]; 

    if (fgets(buf, MAXLINE, fp) == NULL) 
     return 0; 

    return sscanf(buf, "%lf%lf%lf", &itm->cost, &itm->qty, &itm->disc); 
} 

readitem функция будет получить следующую запись, и прочитайте его в указателе itm. Вы можете вызвать функцию в цикле, чтобы получить все элементы:

#define MAXITEMS 255 

item arr[MAXITEMS]; 
size_t i; 
FILE *fin; 

for (i = 0; i < MAXITEMS && readitem(fin, arr + i); ++i) 
    ; 
+0

Большое спасибо ... У меня действительно есть чему поучиться, когда речь заходит о программировании на С ... она старая и сложная, но сложная ... – Kimba