这个 printf() 函数有多少个参数?

How many parameter in this printf() function?

我对编程很陌生。现在正在学习C。请查看以下代码片段 -

printf("StudentId: %d CGPA: %f", id, cgpa); 
printf("Name: %s StudentId: %d CGPA: %f", name, id, cgpa);   

我知道函数接受参数。所以我认为,第一个和第二个 printf() 方法都只需要两个参数 -

1. 双引号内的第一个参数是 - "StudentId: %d CGPA: %f""Name: %s StudentId: %d CGPA: %f"
2. 第二个在引号​​之外,即 - id, cgpaname, id, cgpa

现在我的问题是 - 我认为 prinf() 方法无论有多少变量(即 id、cgpa、name 甚至 department) 都放在双引号之后?

或者如果 printf() 方法采用多个参数,那么它在 C 中是如何处理的?

Printf 可以接受任意数量的参数。

在手册页的末尾可以看到一个...,代表一个var args。

如果你在第一个参数中得到 96 次 %s,你将有 97 个参数(第一个字符串 + 96 个替换字符串;))

不,说 printf 总是有 2 个参数是不正确的。在您的第一种情况下,它需要 3 个参数。在第二种情况下,它需要 4 个参数。

printfvariadic function. It takes a variable number of arguments. In C, functionality for such functions is provided using the stdarg.h (or varargs.h) header file.

printf 可以接受任意数量的输入。这是 printf 原型的样子:

int printf ( const char * format, ... );

如您所见,... 表示参数数量可变。

一个例子是:

 printf("%i %d %f %c %s", int_var, int_var, float_var, char_var, string_var);

这些是格式说明符:%i, %d, %f, %c, %s,这些对应变量的顺序是:int_var, int_var, float_var, char_var, string_var

请看:

printf("StudentId: %d CGPA: %f", id, cgpa); //3 arguments 
printf("Name: %s StudentId: %d CGPA: %f", name, id, cgpa); // 4 arguments 

printf() 可以接受可变长度的参数。

不,它需要可变数量的参数。

int printf(const char *format, ...) 参数数量可变

format - 这是包含要写入标准输出的文本的字符串。它可以选择包含嵌入的格式标签,这些标签由后续附加参数中指定的值替换并按要求格式化。

printf 函数使用它的第一个参数来确定后面有多少个参数以及它们是什么类型。如果你没有使用足够的参数或者它们的类型错误,那么 printf 将会混淆,结果是错误的答案。

其余参数是您在第一个参数(作为字符串)中给出的格式标签的变量。

请阅读here