%c和%s在c语言中是如何工作的?

%c和%s在c语言中是如何工作的?,c,C,至此,%s将继续打印直到终止,即\0。 %c如何知道终止并只打印一个字符?%c总是打印一个字符 char x = 'a'; 这里我们有一个需要打印的字符a char x[2] = "a"; 在上面的示例中,我们有两个字符,一个是'a',另一个是'\0' 因此,在打印时,我们需要使用%s,以便它遇到字符串结尾“\0”并打印字符串。字符串格式不是C或该语言的功能。是由C运行时库提供的工具 “%c”不需要终止符,因为它只处理一个字符 char x = 'a'; “%s”将继续处理字符,直到遇到用

至此,
%s
将继续打印直到终止,即
\0

%c
如何知道终止并只打印一个字符?

%c总是打印一个字符

char x = 'a';
这里我们有一个需要打印的字符a

char x[2] = "a";
在上面的示例中,我们有两个字符,一个是
'a'
,另一个是
'\0'


因此,在打印时,我们需要使用%s,以便它遇到字符串结尾“\0”并打印字符串。

字符串格式不是C或该语言的功能。是由C运行时库提供的工具

“%c”不需要终止符,因为它只处理一个字符

char x = 'a';
“%s”将继续处理字符,直到遇到用C表示为“\000”(或“\0”)的ASCII NUL字符。字符串或字符常量中的正斜杠是没有任何特殊含义的可打印字符

此外,几乎每个C运行时库都提供了对
%s
长度的更多控制:

  • %.123s
    如果未遇到NUL,则最多可处理123个字符
  • %.*s
    需要两个匹配参数:第一个是指定最大字段宽度的整数,第二个是字符指针。示例:
    printf(“x=%.*s\n”,15,ptr)

%c表示字符,范围为0x00到0xff(无符号),即1字节,一个内存位置可以容纳1字节的数据,%c将仅从一个内存位置打印数据,因此不需要终止字符


%s表示字符流表示它必须从内存流位置获取数据,因此它需要一个终止字符,因此%s需要“\0”。

%c
%s
是标准库中的
printf()
函数的一部分,而不是语言本身的一部分

也就是说,
printf()
使用
%
后面的字符以及函数来确定它将从参数中读取什么类型的变量,以及它将如何处理它。高度简化的
printf()
实现可能如下所示

请特别注意,
%c
%s
不处理相同类型的参数
%c
处理
char
(即单个字符),而
%s
处理
char*
(即指向字符数组的指针,希望以null结尾)


它总是打印一个字符,不需要魔法(猜测你想问关于
printf
。在这种情况下,你真的应该阅读文档,为方便起见进行链接。)使用
%c
格式,
printf
不需要知道终止。顺便说一句,它是'\0'而不是'/0'。-->
int c=va_arg;普查尔(c)