変数への保存について – プログラミング – Home

通知
すべてクリア

[解決済] 変数への保存について


コスモス
 コスモス
(@コスモス)
ゲスト
結合: 23年前
投稿: 15
Topic starter  

VC6.0

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

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

char *cTemp;

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

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


引用未解決
トピックタグ
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

char型配列(いわゆる文字列)の仕組みを、まだきちんと理解しきれていないご様子。

> cTemp=cHairetu;

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


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

char cHairetu[20];
char *cTemp;

となっていたとして、

cTemp = cHairetu;

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

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

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

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


返信引用
コスモス
 コスモス
(@コスモス)
ゲスト
結合: 23年前
投稿: 15
Topic starter  

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました