No.5ベストアンサー
- 回答日時:
ということで、こんな感じ
#include<string.h> // require of memset() strcpy()
#include<stdio.h> // require of sprintf() printf()
#define RETBUFMAX 34// 戻り値バッファサイズ
char* d2q(int d, int n)
{
static char retbuf[RETBUFMAX]; // 戻り値バッファ
char numch[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 数字+英数字
char tmp[RETBUFMAX]; //テンポラリバッファ
int res; // 剰余値
int val; // 入力値・商
// 2進数から32進数まで以外はエラー
if(n < 2 || n > sizeof(numch))
return NULL;
val = d;
// バッファクリア
memset(retbuf, 0, sizeof(retbuf));
// 下桁から計算るーぷ
for(;val > 0;) {
res = val % n;
val = val / n;
sprintf(tmp, "%c%s", numch[res], retbuf);
// デバッグ用printf("res=%d val=%d %s\n", res, val, tmp);
strcpy(retbuf, tmp);
}
// 返却
return retbuf;
}
英数字使用で32進数まで対応。どうぞお好きに
No.4
- 回答日時:
gccにはitoaはなかったようなきがします。
atoiも中途半端だったような。
それはともかく、この質問は「関数を作って」という質問ですよね。
正直いって、むしのよすぎる質問ではないですか?
ここは学校の課題の答を教えてもらうところではないと思いますが
みなさんどのようにお考えでしょう?
文句ばかりいってもしょうがないので、ポインタを示しておきます。
dをnで割った余りがn進数の1桁になります。
あとは、dをnで割った商に対して同じことを繰り返せば、
2桁、3桁と求まっていきます。
あとは、繰り返すたびに桁の位置をずらすことと、
10以上の数は、アルファベットに変換することを忘れないで。
No.3
- 回答日時:
itoa()でだめな理由が分かりませんが
あえて d2q() を創るとすると
charstr[100];
char*sss;
char*d2q(int d,int n)
{
return(itoa(d,str,n));
}
または
char*d2q(int d,int n)
{
itoa(d,str,n);
return(str);
}
として
sss=d2q(100,16);
で呼ぶ
次の1行でも全く同じです
sss=itoa(100,str,16);
また sss に値を取らなくても str でも同じです
itoa(100,str,16);
#前回の質問はちゃんと締め切って下さいね
No.2
- 回答日時:
なんでitoa()ではだめなんですか?
格納する領域が無いのにchar*で返して欲しいといっても、だめでしょ。
そのインターフェイスで結果が欲しいのであれば、グローバルな領域に値を格納する領域を準備しておく必要があります。
#前回の質問もほったらかしのようですし。
参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=300399
No.1
- 回答日時:
10進数であろうと、n進数であろうと、プログラム内のデータとしては同じ値です。
従って、intでn進数として持つことは出来ません。
表示させるだけなら、printfなどを使ってフォーマット変換するだけです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語 int temp = 0; if(isdigit(arr[i])){ temp=arr[i] 2 2022/03/27 01:44
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C言語 3 2022/10/04 15:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のfor文です。 繰り返しの...
-
strchr() の第2引数はなぜ int ...
-
CStringをwchar_tに変換したい
-
_TCHAR*での引数の読み込み
-
間接操作のレベルとは
-
fgetsなどのときのstdinのバッ...
-
c++ 文字列を入力して、一文字...
-
C言語の入力した文字を反転させ...
-
ftoa の作り方
-
標準ライブラリ関数の自作につ...
-
c言語です。
-
ネットワークにつながっている...
-
str系関数を使わずに二つの文字...
-
構造体のアライメント調整
-
間接参照のレベルが異なっています
-
文字列から空白を取り除きたい...
-
起動時の引数の取得方法が分か...
-
コマンドラインに入力されてい...
-
配列をnビットシフトする
-
RGB→YUV変換のプログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
charでの計算?
-
C言語のfor文です。 繰り返しの...
-
charからLPTSTRへの変換方法
-
文字列から空白を取り除きたい...
-
C言語の入力した文字を反転させ...
-
'const char *' 型は 'char *' ...
-
配列をnビットシフトする
-
str系関数を使わずに二つの文字...
-
int main()の・・・
-
atoi( ) の反対をやりたい
-
CStringをwchar_tに変換したい
-
c++ 文字列を入力して、一文字...
-
switch文で文字を比較すること...
-
干支のプログラム
-
3桁区切(コンマ)記号をつけ...
-
絶対パスからのファイル名の切...
-
間接操作のレベルとは
-
間接参照のレベルが異なっています
-
型変換
おすすめ情報