C言語なら俺に聞け(入門篇) Part 22
■ このスレッドは過去ログ倉庫に格納されています
0593デフォルトの名無しさん
2007/12/14(金) 11:21:42char*型の戻り値を持つユーザー定義関数がうまく動作させられません。
char* function(引数){
char* str;
〜処理〜
return str;
}
内部でstrに入れる文字数が長いとダメとか、
printf("%s",function()); では表示されないのに
(c++になってしまいますが)cout<<function()<<'\n';では表示されたりとか、その逆だったりとか、
一見呼び出し側で問題無いように見えても、
1回呼び出すだけなら大丈夫でも、for文などで回してやるとエラーが出て停止したりとか。
char*型というのはそもそも、「char mojiretsu[100]」のように長さを指定する文字列と比べて、
必要な領域を確保される、長さに上限は無い、そういう型だと認識していましたが、間違っていますか?(ある程度以上の長さ入れるとマズイとか)
function内部のstrを、「str[20]」のように固定長の配列にするとうまく動いたりもしますが、
str[20]をstr[10]にすると文字化けしたり、はたまたstr[100]にすると表示されなかったりと、
(戻り値として返そうとしているのは半角4〜8文字程度で、10でも箱が足りないことは無いはずなのに)
いずれもコンパイルは通るので、メモリ周りでなにかマズイ処理になってるのだと思いますが・・・
コンパイラはBorland Bcc5.5フリー版です。
もう3日ぐらい悩んでます お願いします・・・
■ このスレッドは過去ログ倉庫に格納されています