gpt4 book ai didi

c++ - C++ 中带有换行符的 printf 的奇怪行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:41 24 4
gpt4 key购买 nike

这可能是一个简单或蹩脚的问题。我一直在玩 C++ 中的 printf 函数。当我使用任何 9 个字符的参数(例如:“argument1”)在 Debian Wheezy 上执行以下代码时;

#include<stdio.h>

int main(int argc, char** argv){

printf(argv[1]+'\n');

}

输出是;

SSH_AGENT_PID=4375

然后我检查了环境变量$SSH_AGENT_PID,它的值是4375。

你能告诉我我的代码是怎么回事吗?(我试图检查 gdb 中的反汇编代码。但我的汇编知识很差,无法准确理解发生了什么)

最佳答案

简单修复:

printf("%s\n", argv[1]);

这是对代码的改进,原因有二:首先,将 printf 的第一个参数设置为字符串常量通常是个好主意,因为这可以防止 printf 代码注入(inject)。其次,它修复了错误,因为正如@Captain Oblivious 指出的那样,您编写的代码并没有按照您的想法行事。

关于c++ - C++ 中带有换行符的 printf 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27697551/

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