gpt4 book ai didi

c - 是 printf(c);是有效的语法(其中 c 是字符串文字)?

转载 作者:行者123 更新时间:2023-11-30 20:47:28 25 4
gpt4 key购买 nike

我来到这个question并看到这一行

printf(&c[i]);  

我想知道,这是一个有效的语法吗?打印不带格式说明符 %s 的字符串/字符串文字不会导致未定义行为违反约束
如果这是一个有效的语法,那么它的用途是什么?

我编译了这段代码

#include <stdio.h>

int main()
{
char *c = "Hello World";

printf(c);
printf("\n\n");
printf(&c[0]);

return 0;
}

它编译时不会给出任何警告/错误输出

Hello World

Hello World

最佳答案

这是不明智的(特别是如果所述字符串来自用户),但并不违法。

相关条款是第 7.19.6.1 节第 3 段(强调我的):

The format shall be a multibyte character sequence, beginning and ending in its initial shift state. The format is composed of zero or more directives: ordinary multibyte characters (not %), which are copied unchanged to the output stream; and conversion specifications, each of which results in fetching zero or more subsequent arguments, converting them, if applicable, according to the corresponding conversion specifier, and then writing the result to the output stream.

您应该使用 fputs(c);fprintf("%s", c); 确保您的字符串不会被意外解释为包含指令.

关于c - 是 printf(c);是有效的语法(其中 c 是字符串文字)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20400304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com