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”。这正是vscanf, vprintfetc 函数的用途:它们接受 '...' 的形式va_list

于 2013-03-26T07:34:25.627 回答