重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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


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


この質問をした目的は、変数の値によって、たくさんある
ファイルのどれを開くか決定したいという所からきました。
fopen の引数が char *abc なんですもの。

A 回答 (2件)

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


幾つか答えます。

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

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

  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);

です。
    • good
    • 0
この回答へのお礼

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

おかげ様で私のプログラミング方法が大きく
改良されそうです。本当にありがとうございました。

お礼日時:2001/04/11 14:19

こんにちわ。


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

ただ、標準出力に出力するだけでしたら、printf文だけでいいのではないでしょうか?
printf("%d",x);
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/04/11 14:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!