0
intまたはfloatのいずれかの10未満の数のファイルを考えてみましょう。私はそれらを読んでアレイに追加したい。Cのファイルからintまたはfloatを読み取る
私が直面してる問題は、私は、例えばだけint型を持っている場合、私はそれも行うことができるということですが、それはfile.data
11
22
33.3
44
55
にフロート
に達するたびに、それは物事を台無しに私のコード:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void usage(char * message) ;
int main(int argc, char * argv[]){
//opening the file
FILE * flux = fopen("file.data", "r");
if (!flux) usage("error opening the file");
int array[10]; //array to host the data
int i=0;
int lu;
while ((lu = fscanf(flux, "%i", &array[i])) !=EOF && i<10){
printf("lu %i\n", lu);
printf("array[%i] %i\n", i, array[i]);
printf("\n");
i++;
}
return 0 ; }
void usage(char * message) { fprintf(stderr, "%s\n", message) ; exit(1) ;}
出力:
lu 1
array[0] 11
lu 1
array[1] 22
lu 1
array[2] 33
lu 0
array[3] 0
lu 0
array[4] 4196464
lu 0
array[5] 0
lu 0
array[6] 4195936
lu 0
array[7] 0
lu 0
array[8] 904651696
lu 0
array[9] 32766
fscanfを使用して浮動小数点数に達したときにどうやってボグしないようにするには?
(私は...その周りにどのような方法をint型の配列を宣言すると、入力にいくつかのフロートを試してみないと思えることを伝えることができますか?)
編集: 私の目標はにあります私の配列を読み込んでそのインデックスでコンテンツを印刷することができます。例えば、私のデータで:
0. 11
1. 22
2. 33.3
3. 44
4. 55
浮動小数点になったらどうしますか?あなたは浮動小数点の丸められた、または 'floor'd int値を保持したいですか? intsを浮動小数点数にしておきたいですか?あなたは整数の配列と浮動小数点の配列を持っていますか? – orip
簡単な答えは: "あなたはこれに' fscanf'を使うことはできません。行を文字列として読み込み、他の手段を使って解析します。エラー検出とともに 'strtol'と' strtod'を使います。 –
問題の見方を再確認してください。ファイルにintまたはfloatがありません。改行で区切られた文字列があります。一度に1行を読み、その内容に基づいて何をしたいのかを決めます。 – Art