ある関数の戻り値が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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C言語について コマンドラインで >変数 12.00 (char型) と、小数点付きの値を共用体に渡 1 2022/04/22 16:56
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のintとcharの違いってな...
-
char*を初期化したいのですが
-
C言語のプログラムについてです
-
C言語にて構造体のメンバがNULL...
-
fstream型オブジェクトを関数の...
-
文字列str内の全ての数字を...
-
小数点入りの文字列をfloat型に...
-
new charとnew char[N]の違いは?
-
CStringからchar*への型変換に...
-
char 文字列型 の表現範囲が-12...
-
char型にint型の数値を代入する。
-
文字列の途中から途中までを抽出
-
DWORDとcharの変換
-
c言語でポインタ変数を用いた配...
-
'\\0'とはなんですか?
-
fgetc( )の戻り値はなぜ整数??
-
ポインタのポインタの使い方
-
callocについて
-
文字型配列に格納した空白の切捨て
-
wsprintf( ポインタ , "%d" , "...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
C言語のintとcharの違いってな...
-
小数点入りの文字列をfloat型に...
-
new charとnew char[N]の違いは?
-
const char* s1とただのchar s1...
-
DWORDとcharの変換
-
strcat関数を自作したいです
-
C++17で、unsigned char * 配列...
-
文字列内の数字削除
-
エクセルのMID関数は、C言語では?
-
char 文字列型 の表現範囲が-12...
-
char型にint型の数値を代入する。
-
C言語を用いた環境変数の作成/...
-
動的メモリの初期化方法について。
-
fstream型オブジェクトを関数の...
-
C言語のプログラムについてです
-
文字列の途中から途中までを抽出
-
C言語:小文字を大文字に変換す...
おすすめ情報