【发布时间】:2021-09-16 00:46:03
【问题描述】:
我是C初学者,主要使用以下两种格式的printf
#include <stdio.h>
//Compiler version gcc 6.3.0
int main()
{
int c=5;
printf("Hello, World!\n");
printf("%d",c);
return 0;
}
但是最近发现printf还有另外一种写法,即printf(string pointer),这个格式怎么和其他两个这么不同,没有引号,为什么有string ,这个问题可能很愚蠢,但请尝试理解我只是一个初学者。
【问题讨论】:
-
其实和你用
printf("Hello, World!\n")完全一样。另请注意,这并不是printf函数的真正不同形式,只是在某些情况下你传递了额外的参数,而对一些你没有。 -
另请注意(这非常重要):您应该永远将变量作为格式字符串传递。如果您将
printf与用户输入一起使用,会阻止用户在输入中提供格式说明符,从而导致print尝试使用实际上不存在的参数。如果要打印用户输入的字符串,请使用printf("%s\n", user_input_string)或puts(user_input_string)。 -
printf只有一个定义:int printf(const char *restrict format, ...);。只需阅读the documentation -
请注意
printf是variadic function。
标签: c printf implicit-conversion string-literals