2016-08-19 8 views
0

私はC言語でファイルを扱うのが難しいです。私はすでにC言語でファイルを読み書きする方法を知っていますが、読んで追加するだけです。文字列の行を読み込んで数字に変換する場合(int)、どうすればいいですか?例えば文字列をテキストファイルから数値に変換する

mytextfile.txtは、これらのデータが含まれています

12345 30 15 
2111 9 20 
    321 17 7 

は現在、各ラインのために、私は量として価格と次の番号のための変数として最初の番号を使用したいと最後の数字は割引です。私の問題は、変数に3つの数値を格納して、整数(または文字列)として使用できるようにする方法です。

readitem関数は次のレコードになるだろう

+3

:あなたは、すべてのアイテムを取得するために、ループ内で関数を呼び出すことができますあなたのために?他に何を試しましたか? [良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask)を読んで、[最小限の完全で検証可能な例](http:// stackoverflow。 com/help/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); 
} 

私の出力価格、数量と割引に基づいて計算量がダウンして1行に1つの値(結果)記載されている必要があります...、とitmポインタにそれを読んでください。動作しません[ `fscanf`機能](http://en.cppreference.com/w/c/io/fscanf)

#define MAXITEMS 255 

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

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

ありがとうたくさん...私はCプログラミングに関しては本当にたくさんのことを学んでいます...それは古くて難しいですが、挑戦しています... – Kimba

関連する問題