1
void mscanf(char *format, ...)
{
  scanf(format);
}
int main()
{
  int n1, n2;
  mscanf("%d%d", &n1, &n2);
  printf("%d,%d\n", n1, n2);
  return 0;
}

これの何が問題になっていますか。このような関数でscanfを使用するにはどうすればよいですか?ありがとう。

4

1 に答える 1

6

あなたの代わりにあなたscanfが望むvscanf

va_list args;
va_start(args, format);
vscanf(format, args);
va_end(args);

変数引数リストで関数を使用する場合、それらの変数引数を渡す必要性に遭遇することがあります。したがって、あなたの例では、あなたが何をしたいのかを知っているので、「'...'をscanfに渡す」必要があります。それがまさにvscanfvprintfetc関数の目的です。これらは。の形式で「...」を受け入れますva_list

于 2013-03-26T07:34:25.627 に答える