プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。

C言語で、一度文字列を入力した変数(ポインタとか配列のことを含めてます)を再度初期化することは可能でしょうか。「初期化」という表現が合っているのか自信はないのですが、要は一度変数に入れた文字列を消去して、再利用する方法を探しています。

目標は、

1.ファイルに変数の文字列を出力する
FILE *fp = fopen("file.txt","w")
char *str = "text"
fprintf(fp,"%s",str)

2.その変数は初期化し、初期化した変数にまた文字列を代入する
*str = 初期化
*str = "text2";

3.それをまたファイルに出力する(以下エンドレス)
fprintf(fp,"%s",str)

という流れにしたいのですが、2.の「初期化」がわからないので、文字列を代入すると、最初にいれた"text"のあとに"text2"がくっついてくる形になってしまい困っています。
これだとstrの容量が大きくなってしょうがないですし、ファイルに出力される文字列も重複したものになってしまうので、いったんstrに入っている文字列を消去してしまって、また新たにstrに文字列を入れようと思っているのですが可能でしょうか。
1~3の動作をほぼエンドレスでやりたいので、新たに変数を作るというやり方意外に何か良い方法があれば教えて頂けないでしょうか。どうぞ宜しくお願いします。

A 回答 (1件)

変数 char *strを


char str[4096];のようにして下さい。
4096は十分におおきな領域と言う程度の意味です。4096の数値に根拠はありませんが、それだけ、とっておけば、通常間に合います。
そのあと、
strcpy(str,"text");のようにして、変数を初期化して下さい。
strcpy(str,"text1");
strcpy(str,"text2");
strcpy(str,"text3");
とすると、その都度、その値で初期化されます。
    • good
    • 0

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