c - 以下输出背后的原因
问题描述
#include <stdio.h>
char *prg = "char *prg = %c%s%c;main(){printf(prg,34,prg,34);} " ;
void main (){
printf(prg,34,prg,34);
}
以下输出背后的原因
char *prg = "char *prg = %c%s%c;main(){printf(prg,34,prg,34);} ";main(){printf(prg,34,prg,34);}
解决方案
*prg 中的内容被打印,但是代替“%c%s%c”的内容被替换,为什么它被嵌入
这就是工作方式printf()
- 在格式(第一个prg
参数)中,每个转换规范(%c
, )根据转换说明符(, %s
)转换后续参数(34
, )并将结果写入标准输出。prg
c
s
推荐阅读
- deep-learning - 修改 Caffe VGG 16 以在 PyTorch 上处理 1 通道图像
- reactjs - Reactjs 无法通过映射函数获取 json 数据
- java-8 - Wildfly 14 找不到 JDK 类
- matlab - 传奇; 键/颜色之前的文本/描述?
- visual-studio - 如何为 Visual Studio 2017 中的所有项目默认定义强名称签名和构建后事件命令?
- javascript - 如何在使用 Nuxt.js 的项目中使用 stencil.js 进行 SSR(以及 SSR)
- c# - C#将字节数组转换为jsonstring返回字符串
- batch-file - 将 FINDSTR 与引号和标点一起使用
- linux - 当调试器可以手动写入同一内存时,为什么在尝试执行写入内存的指令时会出现分段错误?
- scala - java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:元空间