2010-12-28 11 views
1

計算し、私が把握することはできませんし、このことを試してみる:はどのように、ファイルを読み込んだデータをピックアップし、私は本を読んでいる

書き込み(それはので、私はそれを翻訳し、英語以外の言語で書かれています)いくつかの生徒を尋ねるプログラム、n人の生徒を選択する(動的な方法で)、名前は10文字で5文字になります。

上記の選択肢からテキストファイルnote.txtを作成し、 10文字に達する(名前のために)。

次に、ファイルを読み込み、それから(のみ)合計を計算します。次に、10を超えないノートの名前とノートを表示します。

3つの関数createStudent、createFile、readFileを実装し、グローバル変数を使用しないでください。

シンタックス:nameはchar nom [10 + 1](つまりJamesと10文字を得るために5つのハイフンが追加されます)=> james -----とnote:char [5+ 1](すなわち15.00または07.50)

ヒント:フロートするテキスト形式のノートを変換するには、あなたが

atof関数を使用することができ、私はcreateStudentとのCreateFile関数を作成しました。彼らはうまく動作しますが、私は最後の部分(readFile関数)を理解することはできません。バート------ 04.50リサ------ 18.00ホーマー-----それはコンパイルが、仕事と私はありません03.00

void readFile(int n){ 
FILE* file = NULL; 
double temp= 0.0, average= 0.0; 
double *total = (double*)malloc(n*sizeof(double)); 

int position = 0; 
char information[5+1]=""; 

file = fopen("c:\\myFile.txt","r"); 
fseek(file,10,SEEK_SET); 
while(fgetc(file) != EOF) 
{ 
    fscanf(file,"%5s",&information); 
    temp = atof(information); 
    total[position]= temp; 

    position++; 

    fflush(stdin); 
    fseek(file,11,SEEK_CUR); 
} 
fclose(file); 
for(int compteur=0;compteur<2;compteur++) 
{ 
    moyenne += totalNote[compteur]; 
} 

私のテキストファイルには、この形状をしています私はあなたが使用してに見てみたいC言語は、JavaやC#

に比べて、お尻に痛みであるという感覚は、あなたが私にいくつかのライトをお願いできますか?

答えて

1

を持っている理由:( 把握することはできませんstrtok_r(またはstrtok_rが利用できない場合はstrtok)スペース区切り記号付きのトークンの配列に変換します。次に、配列をループして量を変換して合計するのは簡単です。

3

入力ファイルに ""という形式の行が含まれているようです。 1行に固定数の文字列/数字がある場合は、単にfscanf(例:fscanf(file, "%*s %f %*s %f %*s %f", &number1, &number2, &number3);)を使用できます。

一方、1行に任意の数の文字列/数字のペアを設定できる場合は、strtok関数を見てください。

1

fscanfまたはfgets、strtok、atol(またはsscanf)の組み合わせを使用して番号を読み取ります。

関連する問題