• ベストアンサー

C言語 ファイルポインタ

度々同じプログラムで質問させてもらっています。 #include <stdio.h> #include <time.h> #include <math.h> #define N 10 void filewrite(int i,int a[]); void main(void){ int min,s,t,i,j,k,a[N]; srand((unsigned int)time(NULL)); for(i=0;i<N;i++) a[i]=rand()%10+1; for(j=0;j<i-1;j++){ min=a[j]; s=j; for(k=j+1;k<i;k++){ if(a[k]<min){ min=a[k]; s=k; } } t=a[j];a[j]=a[s];a[s]=t; filewrite(i,a); } } void filewrite(int i,int a[]){ int s; FILE *fp; fp = fopen("selection.txt","w"); if(fp == NULL)return; for(s=0;s<i;s++){ fprintf(fp,"%d,",a[s]); } fprintf(fp,"\n"); fclose(fp); } 途中経過もテキストファイルで出力したいのですが、このプログラムを実行すると最後の結果しか出力されません。 アドバイスをよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

> 途中経過もテキストファイルで出力したいのですが、 > このプログラムを実行すると最後の結果しか出力されません。 ループの途中で、filewrite()を呼び出しているという事でしたら、 fp = fopen("selection.txt","a"); としてみては。 詳しくはfopenのヘルプを御覧下さい。

wangorou
質問者

お礼

”a”にしたら途中経過も出力されました。 今日一日ずっと悩んでいたのがうそみたいです。 勉強不足でした。fopenのヘルプを見て確認してみます。 ありがとうございました。

その他の回答 (1)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> fp = fopen("selection.txt","w"); fp = fopen("selection.txt","a"); fopen() のモードを a にすると、追加書き込みになります。 # ということではない?

wangorou
質問者

お礼

”a”にしたら出力されました。 今日一日ずっと悩んでいたのがうそみたいです。 勉強不足でした。 ありがとうございました。

関連するQ&A