- 締切済み
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 ご面倒かもしれませんが、お願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
処理系でソースプログラムを実際にコンパイルすれば、ウォーニングメッセージで指摘されてませんか? ついで、デバッガでブレイクポイントを設定するなりで実行トレースすれば、動作上の不具合箇所は見つかるでしょう。
- Wr5
- ベストアンサー率53% (2173/4061)
[技術者向] コンピューター > プログラミング > C&C++ ってカテゴリがあるのですが…… とはいえ、課題丸投げは敬遠されるでしょうな。 実際にコード書いてコンパイルすらしていないことが丸わかりですよ? 確実にコンパイルエラーになる箇所が一つ。 コンパイラが対応しているCの規格によってはエラーになると思われる箇所が一つ…ってところですかね。 # って回答書いている間に他の指摘もありましたな。コンパイルエラーにはならないレベルの。 で、たいていのプログラマは…「自助努力もしない人」は嫌う傾向があります。 ということで…回答としては 『まずはコンパイルしてみろ』と『その時のエラーメッセージを読んで理解しろ』ということになりますかね。 課題である以上、既に講義などで習った範囲であるハズですが。 # プログラマになりたいわけでもなく、嫌々取った科目だ。というのであれば、単位さえ取れればいいのでしょうけど。
- kakuritsu
- ベストアンサー率23% (62/261)
とりあえず画面出力するロジックがどこにもないですね。