-PR-
解決
済み

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

  • 困ってます
  • 質問No.62425
  • 閲覧数63
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 87% (76/87)

void func(int x)
{
 puts(&&&&&(x));
}


こんな風にして、func という関数の引数に1が与えられたら、
putsを実行できるように1を文字列(つまり"1")に
変換してくれる&&&&&(x)という関数あるいは
マクロが作成できないでしょうか?


この質問をした目的は、変数の値によって、たくさんある
ファイルのどれを開くか決定したいという所からきました。
fopen の引数が char *abc なんですもの。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

何を答えて良いか良く分からんのですが、適当に想像して
幾つか答えます。

・変数の値によって、どのファイルを開くかを決めたい

が最終的な目標なのですよね?
であれば、

  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

お礼率 87% (76/87)

ひぇぇ、そんな便利な関数(sprintf)があった
なんて全く知りませんでした。

おかげ様で私のプログラミング方法が大きく
改良されそうです。本当にありがとうございました。
投稿日時 - 2001-04-11 14:19:25
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル8

ベストアンサー率 40% (16/40)

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

ただ、標準出力に出力するだけでしたら、printf文だけでいいのではないでしょうか?
printf("%d",x);
お礼コメント
aaaaa

お礼率 87% (76/87)

Cの話で安易に&を使ってはいけませんでしたね。(反省)
ご指摘のとおりsprint文で解決できました。
たいへんありがとうございました。
投稿日時 - 2001-04-11 14:20:35


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ