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

时间:2015-06-03 10:56:12

标签: c methods arguments printf

我是编程新手。现在我正在学习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, cgpa name, id, cgpa

现在我的问题是 - 我是正确的,而我认为prinf()方法只需要两个参数,无论有多少变量(即 id,cgpa,name 或甚至部门)都放在双引号之后?

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

5 个答案:

答案 0 :(得分:4)

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

printfvariadic function。它需要可变数量的参数。在C中,使用the stdarg.h (or varargs.h) header file提供此类函数的功能。

答案 1 :(得分:3)

Printf可以根据需要选择多个参数。

在手册页中,您可以看到最后的...,代表var args。

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

不需要可变数量的参数。

int printf(const char *format, ...)采用变量no of arguments

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

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

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

请阅读here

答案 4 :(得分:1)

请看:

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

printf()可以使用可变长度的参数。