我是编程新手。现在我正在学习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中处理的?
答案 0 :(得分:4)
不,说printf
总是需要2个参数是不正确的。在你的第一种情况下,它需要3个参数。在第二种情况下,它需要4个参数。
printf
是variadic 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()
可以使用可变长度的参数。