2011-07-18 5 views
0

私は入力ファイルから3列の数値を読み込み、得られた数値で基本的な計算を行うためにCコードを作成しています。私の入力ファイルは次のようになります。列を読み取る

155.4996 38.0078 7.65

93.9968 44.9926 7.68

私は現在、sscanf関数を使用して列を分離しようとしています。これを開始するには、列を読み込み、3番目の列だけを出力ファイルに出力しようとしています。以下は現在私が持っているものです:

FILE * fp; 
FILE * fp2; 
char *string; 
char out[2000]; 
char read[1000]; 
int column1, column2, column3; 

strcpy(read, "casecent"); 
strcpy(out, "Diff"); 

fp = fopen(read, "r"); 
fp2 = fopen(out, "w+"); 

while (!feof(fp)) 
{ 
    fgets(string, 1000, fp); 
    sscanf(string, "%d %d %d", &column1, &column2, &column3); 
    fprintf(fp2,"%d\n", column3); 

} 

現在、数値の代わりに出力ファイルにゼロが表示されています。私はちょっとしたことをやっていないと確信していますが、もしあなたが私を助けることができたら、それは大いに感謝されます。

答えて

1

列変数のデータ型には、floatまたはdoubleを使用します。次に、選択したデータタイプに応じて、sscanfの書式文字列にそれぞれ%fまたは%lfを使用します。

値を整数として保存または印刷したい場合は、最初にfloatまたはdouble型として読み込み、変換する必要があります。

+0

大変ありがとうございます!あなたが入力ファイルの最後の行を読んで2回印刷している理由を理解するのに役立つでしょうか? –

+0

ここには非常に良い説明と修正があります:http://www.gidnetwork.com/b-58.html –

関連する問題