変数への保存について

[戻る]
コスモス 2002/06/06(木) 11:21:30
VC6.0

いつもお世話になっております。
コスモスです。

配列の中身をある条件の時のみ変数に代入したいのですが、
格納しておく変数をchar*型にするとこの条件外でも、
配列の中身が変わったら自動的に変数の中身も変わってしまいます。
これを解消する良い方法はないでしょうか?
よろしくお願いします。

char *cTemp;

if(i==10){
cTemp=cHairetu;
}

(cHairetuはグローバルでcHairetu[20]と宣言しています。)

sugar 2002/06/06(木) 11:34:33
char型配列(いわゆる文字列)の仕組みを、まだきちんと理解しきれていないご様子。

> cTemp=cHairetu;

これは、アドレスを代入しただけであって、文字列をコピーしたわけではありません。
strcpy()等を用いる必要があります。

PAI 2002/06/06(木) 11:39:46
char cHairetu[20];
char *cTemp;

となっていたとして、

cTemp = cHairetu;

としたとき、cTempには何が入るか、正確に理解できていますでしょうか?


この場合cTempに入るのはcHairetuの「先頭アドレス」のみで、
「配列の中身」は代入されてませんよ。

char* に char[20] は入れられませんので。

「配列の中身」をほかの場所にとっておきたいのなら、
そのために十分な領域を確保して、コピーしてあげる必要があります。

コスモス 2002/06/06(木) 13:10:27
[[解決]]
sugar様、PAI様いつもアドバイスしてくださってありがとうございます。
まだまだポインタの理解が出来ていませんでした...。
アドバイス通り、別に領域を確保して、strcpyで文字列のコピーをすると
うまくいきました。
未熟者で申し訳ありません...。もっと勉強します。
また質問させていただいた時はよろしくお願いします。

古いスレッドには追加発言できません。