• ベストアンサー

固定長ファイルの書き込み方法(スペースの場合)

固定長ファイルの書込み処理で、スペース(長さ=15)を書込む場合、 どうやってやればいいのでしょうか? 以下のようにやるのは、ダサイですよね? fprintf(fp, " "); /* スペースを15コ */ sprintf等の %s 等の方法を変えて、出来ないですよね?

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

  • ベストアンサー
回答No.1

> 以下のようにやるのは、ダサイですよね? > fprintf(fp, " "); /* スペースを15コ */ いいえちっとも。やりたいことが明確で好ましいと思います。 空白の数が変わるのであれば const char* spaces(int n) /* n個の空白を返す */ を作り、fprintf(fp, spaces(15)); すればいい。

minmi55
質問者

補足

>const char* spaces(int n) /* n個の空白を返す */ >を作り、fprintf(fp, spaces(15)); すればいい。 上記のやり方ですが、const char* spaces(int n);は 自分で" "を15回くっつけるような関数を作るという事ですか? 例) const char* spaces(int n, char str); /* 呼び出し元 */ int spaces(int n, char str) { str = ' '; for(i=1; n < i, i++){ strcat(str, ' '); }

その他の回答 (6)

回答No.7

ANo.4-補足 > …勉強し直し。ダメダメです。 > スイマセン。 > ど、どこがダメなのでしょう? 訊いてばかりでこれを実際にコンパイル/実行し、試そうとしないところ。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.6

普通に #define STR_SPACE " " //スペースを15コ fprintf(fp, STR_SPACE); でよいと思いますが。

回答No.5

ANo.3 > fprintf(fp,"%15s"," "); > でいいような気がします なるほど。ならばいっそ: fprintf(fp,"%*s", n, " "); とすれば n 個の空白が打てる。

回答No.4

ANo.1-補足 > int spaces(int n, char str) > { > str = ' '; > for(i=1; n < i, i++){ > strcat(str, ' '); > } …勉強し直し。ダメダメです。

minmi55
質問者

補足

ANo.1-補足 > int spaces(int n, char str) > { > str = ' '; > for(i=1; n < i, i++){ > strcat(str, ' '); > } >…勉強し直し。ダメダメです。 スイマセン。 ど、どこがダメなのでしょう? まだまだ未熟です(恥っ)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

fprintf(fp,"%15s"," "); でいいような気がします

  • akinori_s
  • ベストアンサー率60% (21/35)
回答No.2

n個の空白を返すってのだけでしたら char* str = (char*)malloc(n+1); memset(str,' ',n); str[n] = '\0'; でもできると思います。 十分はなサイズの配列を用意してるのであれば、 動的確保はいらなくなると思います。

関連するQ&A