• ベストアンサー

変数の中身を文字列に変換ってできますか?

void func(int x) {  puts(&&&&&(x)); } こんな風にして、func という関数の引数に1が与えられたら、 putsを実行できるように1を文字列(つまり"1")に 変換してくれる&&&&&(x)という関数あるいは マクロが作成できないでしょうか? この質問をした目的は、変数の値によって、たくさんある ファイルのどれを開くか決定したいという所からきました。 fopen の引数が char *abc なんですもの。

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

何を答えて良いか良く分からんのですが、適当に想像して 幾つか答えます。 ・変数の値によって、どのファイルを開くかを決めたい が最終的な目標なのですよね? であれば、   FILE* f;   char* filename;   switch (x) {   case 1: filename = "filename1"; break;   case 2: filename = "filename2"; break;    ...   }   f = fopen(filename, "r"); んな感じで良いのですよね。 ・理由はどうあれ、数字を文字列にしたい なら sprintf() を使います。   int x;   char buf[256];   sprintf(buf, "%d", x); です。

aaaaa
質問者

お礼

ひぇぇ、そんな便利な関数(sprintf)があった なんて全く知りませんでした。 おかげ様で私のプログラミング方法が大きく 改良されそうです。本当にありがとうございました。

その他の回答 (1)

  • bagyo
  • ベストアンサー率40% (16/40)
回答No.2

こんにちわ。 質問中の&&&&(x)というのは関数の名前でよろしいのすね。(Cですと、&は対象とする変数のアドレスを表しているはずだったと思ったものですから。) 変数が1桁の場合でしたら、以下の方法で文字にすることが出来ます。 #define ITOA(a) ('0' + a) また、一般的にはsprintfを利用することによって、実現できると思います。 ただ、標準出力に出力するだけでしたら、printf文だけでいいのではないでしょうか? printf("%d",x);

aaaaa
質問者

お礼

Cの話で安易に&を使ってはいけませんでしたね。(反省) ご指摘のとおりsprint文で解決できました。 たいへんありがとうございました。

関連するQ&A