

ある関数の戻り値がchar*でその関数の戻り値をchar変数に格納したいです。
char *ret_ch()
{
char *p="12";
return p;
}
int main(){
char res;
//ここでret_ch()の戻り値の実体数値を代入
res=*ret_ch();
cout<<"RET=="<<ret<<endl;
return 0;
}
char型は1バイトなので一文字しか入りません。
char型に数値として扱い、上記のポインターの
実体数値を格納するにはどのようにしたらいいのでしょうか?
よろしくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>もし、戻り値がint型でその値をcharに格納する場合は、どのようにしたらいいのでしょうか?
>res_ch=(char)ret_int();
数値として代入したいのなら上記でイイと思います。
ですが、当然charには127以上の数値を(正しく)代入できません。
C文字列として変換したいのであれば
#include <cstdio>
char buff[5];//必要な桁+1
sprintf(buff,"%d", ret_int());
cout<<buff<<endl;
とかすればいいと思います。
No.3
- 回答日時:
// strtolのライブラリのusing
// iostreamのusing
char* twelve = "12";
char* ret_ch()
{
return tewlve;
}
void main()
{
char* r = ret_ch();
char* p;
int n = strtol(r, &p, 10);
count << "RET" << n << endl;
}
No.2
- 回答日時:
・・・日本語が今ひとつはっきりしないのですが、ret_ch()の中で作った"12"を、整数としての12にして、char型の変数に返したいと言う事でしょうか?
そうならば、文字列の"12"を、自力で数値に変換するか、atoi()などの標準関数を使用するかしないといけないと思います。
"12"は、文字列です。(内部的には数値ですがここでは気にしない事)
"12"の先頭アドレスを返しているのですから、
res=*ret_ch()とした場合、"12"のアドレスの0番目の一文字を、resに格納する。
という意味になるので、当然1と出力されます。
スタンダードにやるなら、BLUEPIXY様の仰る通り、
char res;
//ここでret_ch()の戻り値の実体数値を代入
res=atoi(ret_ch());//数値として代入
とすれば丸く収まるはずです。
char resを
char *resとして、
res = ret_ch()とすれば、resのポインタを進めてその先を表示する事も出来ますが・・・
No.1
- 回答日時:
もう一つやりたいことが良く判らないので勘違いしてたらすみません。
C文字列から数値にするには、atoiとかstrtolとかを使えばいいです。
charですべての文字を受けるには、配列などにしてstrcpyすればいいと思います。
---------------------------------------------------------------
#include <iostream>
#include <cstdlib>
using namespace std;
char *ret_ch(){
char *p="12";
return p;
}
int main(){
char res;
//ここでret_ch()の戻り値の実体数値を代入
res=atoi(ret_ch());//数値として代入
cout<<"RET=="<<(int)res<<endl;
char *ret=ret_ch();
cout<<"RET=="<<ret<<endl;//ポインタとして受けて文字列として表示
char buff[3];
strcpy(buff,ret_ch());
cout<<"RET=="<<buff<<endl;
return 0;
}
この回答への補足
追加ですが、
もし、戻り値がint型でその値をcharに格納する場合は、どのようにしたらいいのでしょうか?
int ret_int(){
int res =2005;
return res
}
int main(){
char res_ch;
//ここでchar型の変数に格納するが??
res_ch=(char)ret_int();
cout<<res_ch<<endl;
return 0;
}
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CStringからchar*への型変換に...
-
char AA[]{"全角文字"};から"全...
-
文字列の連結
-
警告
-
char型にint型の数値を代入する。
-
SubStringの使い方について
-
小数点入りの文字列をfloat型に...
-
ポインタ配列
-
文字列のswap
-
続ポインタによる関数への配列渡し
-
C言語ポインタ 配列について
-
Cの関数の引数のconst *charに...
-
関数から配列を返すには?
-
C言語 配列の長さの上限
-
c言語
-
C++DLLからC#へのコールバック...
-
データ数が多い場合のソート
-
c言語 構造体
-
n番目に大きい数を求めるアル...
-
リスト構造のソートで悩んでま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CStringからchar*への型変換に...
-
C言語のintとcharの違いってな...
-
char*を初期化したいのですが
-
char型にint型の数値を代入する。
-
C言語にて構造体のメンバがNULL...
-
C++17で、unsigned char * 配列...
-
new charとnew char[N]の違いは?
-
入力された文字列の中の数字を...
-
char 文字列型 の表現範囲が-12...
-
文字列str内の全ての数字を...
-
C言語のプログラムについてです
-
ポインタ配列
-
fstream型オブジェクトを関数の...
-
strcat関数を自作したいです
-
動的メモリの初期化方法について。
-
ポインタで詰まりました;
-
c言語でポインタ変数を用いた配...
-
C++Builder 2009 テキスト...
-
C言語 strstrの実装
-
fgetc( )の戻り値はなぜ整数??
おすすめ情報