C++初心者で大変恐縮なのですが、以下のコードで質問があります。
sprintf関数でフォーマット指定してintからchar*に変換したいのですが、
文字化けした結果が返されてしまいます。
IntToStr関数を抜ける際にval変数が削除されているため(関数内スコープによる影響)かと思うのですが、
自作の関数でchar*を上手く返すにはどのようにしたらよいでしょうか。
またmain関数にTESTインスタンスのt1,t2を二種類の方法で書いているのですが、
これは同じ意味なのでしょうか。
質問が抽象的で大変申し訳ありませんが、よろしくお願いします。
C++
1class TEST { 2public: 3 char* test; 4}; 5 6char* IntToStr(int a) { 7 char val[256] = {'\0'}; 8 sprintf_s(val, 256, "%d", a); 9 return val; 10} 11 12int main() { 13 TEST t1; 14 t1.test = IntToStr(30); 15 printf("%s", t1.test); 16 17 TEST *t2 = new TEST(); 18 t2->test = IntToStr(31); 19 printf("%s", t2->test); 20}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。