VC6.0
いつもお世話になっております。
コスモスです。
配列の中身をある条件の時のみ変数に代入したいのですが、
格納しておく変数をchar*型にするとこの条件外でも、
配列の中身が変わったら自動的に変数の中身も変わってしまいます。
これを解消する良い方法はないでしょうか?
よろしくお願いします。
char *cTemp;
if(i==10){
cTemp=cHairetu;
}
(cHairetuはグローバルでcHairetu[20]と宣言しています。)
char型配列(いわゆる文字列)の仕組みを、まだきちんと理解しきれていないご様子。
> cTemp=cHairetu;
これは、アドレスを代入しただけであって、文字列をコピーしたわけではありません。
strcpy()等を用いる必要があります。
char cHairetu[20];
char *cTemp;
となっていたとして、
cTemp = cHairetu;
としたとき、cTempには何が入るか、正確に理解できていますでしょうか?
この場合cTempに入るのはcHairetuの「先頭アドレス」のみで、
「配列の中身」は代入されてませんよ。
char* に char[20] は入れられませんので。
「配列の中身」をほかの場所にとっておきたいのなら、
そのために十分な領域を確保して、コピーしてあげる必要があります。
sugar様、PAI様いつもアドバイスしてくださってありがとうございます。
まだまだポインタの理解が出来ていませんでした...。
アドバイス通り、別に領域を確保して、strcpyで文字列のコピーをすると
うまくいきました。
未熟者で申し訳ありません...。もっと勉強します。
また質問させていただいた時はよろしくお願いします。