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を使用するにはどうすればよいですか?ありがとう。
あなたの代わりにあなたscanf
が望むvscanf
:
va_list args;
va_start(args, format);
vscanf(format, args);
va_end(args);
変数引数リストで関数を使用する場合、それらの変数引数を渡す必要性に遭遇することがあります。したがって、あなたの例では、あなたが何をしたいのかを知っているので、「'...'をscanfに渡す」必要があります。それがまさにvscanf
、vprintf
etc関数の目的です。これらは。の形式で「...」を受け入れますva_list
。