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

3

我是一个编程新手。现在我正在学习 C 语言。请看下面这段代码:

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

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

1. 在双引号内的第一个参数为 - "学生ID: %d 成绩: %f" 或者 "姓名: %s 学生ID: %d 成绩: %f"
2. 第二个参数在引号外面,为 - id, cgpa 或者 name, id, cgpa

现在我的问题是 - 我想问一下,是否我正确地认为prinf()方法只需要两个参数,无论在双引号后面放置了多少变量(如id,cgpa,name或者department)?

如果printf()方法需要多个参数,则它在C中会如何处理?

5个回答

4

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

在man页面中,您可以看到末尾有一个...,表示可变参数。

如果您在第一个参数中使用了96次%s,则将有97个参数(第一个字符串+替换后的96个字符串;))


4
不,不能说printf总是需要2个参数。在第一个情况下,它需要3个参数。在第二种情况下,它需要4个参数。printf是一种可变参数函数。它接受可变数量的参数。在C语言中,这种函数的功能是使用stdarg.h(或varargs.h)头文件提供的。

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

。这些说明符与变量一起使用,可以帮助您在IT技术中更好地格式化文本。


2

不,它可以接受可变数量的参数。

int printf(const char *format, ...) 可以接受可变数量的参数。

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

printf 函数使用其第一个参数来确定将跟随多少个参数以及它们的类型。如果您没有使用足够的参数或者它们的类型不正确,则 printf 将会混淆,导致错误的答案。

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

请阅读此处


1

Please Look:

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

printf()函数可以接受可变数量的参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接