2017-08-16 12 views
-4

商品名、商品数量、商品価格を含むファイルがあります。番号のリストを読むには

file.txt 

3 
Product Qty Price 
Tv  2 10 
Mobile 3 20 
Computer 5 30 

は、私は、製品のリストの上に指定された整数(例えば3)から多数の製品を読み、製品の合計金額をカウントします。プログラムは構造体を使用して

struct product {   
    Char name[30]; 
    int qty ; 
    float price;   
} 

のような製品の詳細を読み込みます。このプログラムを簡単にするためのベストプラクティスは何ですか?

+2

() '入力の行をフェッチするために'のfgetsを使用してみてください、そして 'のsscanf()'入力を解析します。 –

答えて

1

次のプログラムがお手伝いします。

#include <stdio.h> 
#include <stdlib.h> 

struct product { 
    char name[30]; 
    int qty; 
    float price; 
}; 

int main(void) { 
    int count = 0; 
    char line[100]; 
    FILE *fptr; 
    fptr = fopen("file.txt", "r"); 
    fscanf(fptr, "%d", &count); // count = 3 
    struct product *p = malloc(sizeof(struct product)); 
    int i = 0; 
    double sum = 0; 
    while (i < count + 2 && fgets(line, sizeof(line), fptr) != NULL) { 
     if (i > 1) { 
      sscanf(line, "%s %d %f\n", (*p).name, &(*p).qty, &(*p).price); 
      sum = sum + (*p).price; 
     } 
     i++; 
    } 
    printf("sum: %f\n", sum); 
    free(p); 
    return 0; 
} 

テスト

$ gcc main.c                 
$ ./a.out                  
sum: 60.000000 
$ 
+0

ありがとう –

関連する問題