c言語に関する質問です
こんにちは。
私はとある大学の機械工学科の学生です。
先日プログラミングの授業で課題が出されたのですが、さっぱりわかりません。
目的を達成するために、下のプログラム(使ってるものはC++)の間違いを2か所訂正しなさいというものです。
どこをどう直せばいいのか教えてください。
一番左の数字は、ここで指摘しやすくするための行数です。
1 #include <stdio.h>
2 #include <stdlio.h>
3 // 計算処理をするための関数
4 void operation(FILE* ifp,FILE* ofp)
5 {
6 const int LOOPLIMIT = 10000; //ループ最大回数を規定。エラー対策
7
8 if((ifp==NULL)||(ofp==NULL)){//ファイルポインタのエラー処理
9 fprintf(stderr,"[ERROR]null file poimter detected.\n);
10 exit(-1);
11 }
12
13 for(int i=0;i<LOOPLIMIT;i++){//入力ファイルは1万行までサポート
14 if(fscanf(ifp,"%f%f",&a,&b) == EOF) //入力ファイルから数値2個読み込み
15 break;//読み込めなかったら処理を終了
16 float c = a*b;
17 fprintf(ofp,"%g,%g,%g\n",a,b,c);
18 }
19}
20 // メイン関数
21 int main(int argc,char* argv[])
22 {
23 FILE* ifp = NULL; //入力用ファイルポインタ
24 FILE* ofp = NULL; //出力用ファイルポインタ
25 char* ifile = NULL; //入力ファイル名
26 char* ofile = NULL; //出力ファイル名
27
28 if(argc!=3){
29 fprintf(stderr,"Usage:%s inputfile outputfile\n,argv[0]);
30 exit(1);
31 }
32
33 ifile = argv[1]; //パラメータの1番目を入力ファイル名
34 ofile = argv[2]; //パラメータの2番目を出力ファイル名
35
36 if((ifp = fopen(ifile,"rt"))==NULL{ //入力ファイルを開く
37 fprintf(stderr,"Can't open file %s\a\n",ifile); //開けなかったら終了
38 exit(2);
39 }
40 if((ifp = fopen(ofile,"wt"))==NULL{ //出力ファイルを開く
41 fprintf(stderr,"Can't open file %s\a\n",ofile); //開けなかったら終了
42 exit(3);
43 }
44
45 operation(ifp,ofp);
46
47 fclose(ofp);
48 fclose(ifp);
49 return(0);
50 }
入力ファイル例(inputdata.txt)
147 0.369
258 0.147
369 0.258
ファイル出力結果の例(outputdata.csv)
147, 0.369, 54.243
258, 0.147, 37.926
369, 0.258, 95.202
画面出力結果の例
147 x 0.369 = 54.243
258 x 0.147 = 37.926
369 x 0.258 = 95.202
ご面倒かもしれませんが、お願いいたします。
お礼
なるほど。参考になりました。NASAの宇宙開発計画でも適用された実績がある程のものですか。凄いことをご存知ですね。ありがとうございました。