アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

sprintf等の %s 等の方法を変えて、出来ないですよね?

A 回答 (7件)

> 以下のようにやるのは、ダサイですよね?


> fprintf(fp, " "); /* スペースを15コ */

いいえちっとも。やりたいことが明確で好ましいと思います。
空白の数が変わるのであれば

const char* spaces(int n) /* n個の空白を返す */
を作り、fprintf(fp, spaces(15)); すればいい。

この回答への補足

>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, ' ');
}

補足日時:2005/08/30 17:47
    • good
    • 0

ANo.4-補足


> …勉強し直し。ダメダメです。
> スイマセン。
> ど、どこがダメなのでしょう?

訊いてばかりでこれを実際にコンパイル/実行し、試そうとしないところ。
    • good
    • 0

普通に


#define STR_SPACE " " //スペースを15コ




fprintf(fp, STR_SPACE);
でよいと思いますが。
    • good
    • 0

ANo.3


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

なるほど。ならばいっそ:
fprintf(fp,"%*s", n, " ");
とすれば n 個の空白が打てる。
    • good
    • 0

ANo.1-補足


> int spaces(int n, char str)
> {
> str = ' ';
> for(i=1; n < i, i++){
> strcat(str, ' ');
> }

…勉強し直し。ダメダメです。

この回答への補足

ANo.1-補足
> int spaces(int n, char str)
> {
> str = ' ';
> for(i=1; n < i, i++){
> strcat(str, ' ');
> }

>…勉強し直し。ダメダメです。

スイマセン。
ど、どこがダメなのでしょう?
まだまだ未熟です(恥っ)

補足日時:2005/08/31 00:22
    • good
    • 0

fprintf(fp,"%15s"," ");


でいいような気がします
    • good
    • 0

n個の空白を返すってのだけでしたら



char* str = (char*)malloc(n+1);
memset(str,' ',n);
str[n] = '\0';

でもできると思います。
十分はなサイズの配列を用意してるのであれば、
動的確保はいらなくなると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!