C语言中带有换行符的printf的怪异行为

和杰伊

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

#include<stdio.h>

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

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

}

输出是

SSH_AGENT_PID=4375

然后,我检查了环境变量$SSH_AGENT_PID,其值为4375。

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

毫米

解释您从中看到的内容argv[1] + '\n'这是指针整数(字符常量int在C中具有类型)。

C语言中对它的定义是指针以整数形式前进许多单位。\n10在ASCII所以这将通过10个字符推进指针。如果您的字符串小于10,则您现在正在读取该字符串末尾之外的内存内容。

本·布劳恩(Ben Braun)提出的解决方案很好。另一个选项是puts( argv[1] );将不执行任何类似于printf的翻译而输出字符串,并输出换行符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C语言中,即使没有信号,没有换行符的printf()也不会生成输出?

来自分类Dev

在C语言中,即使没有信号,没有换行符的printf()也不会生成输出?

来自分类Dev

Printf%X标识符-带有指针的怪异行为

来自分类Dev

我应该使用printf(“ \ n”)还是putchar('\ n')在C语言中打印换行符?

来自分类Dev

目标c-带有int的怪异行为

来自分类Dev

带有c ++ asio库的Websocket怪异行为

来自分类Dev

带有TextBox的Angular怪异行为

来自分类Dev

NSIS带有GetParameters的怪异行为

来自分类Dev

C语言中怪异的矩阵数组行为

来自分类Dev

自动检测C语言中的OS并处理其特定的换行符

来自分类Dev

带有错误语句的怪异行为if()评估为true C#

来自分类Dev

Laravel PHPUnit测试,带有seePageIs()的怪异行为

来自分类Dev

self =带有剔除的嵌套viewmodel中的怪异行为

来自分类Dev

带有大量数字的怪异行为python

来自分类Dev

带有$ resource和$ httpBackend的AngularJS怪异行为

来自分类Dev

C ++中的怪异行为

来自分类Dev

C指针怪异行为

来自分类Dev

获取带有换行符的列表

来自分类Dev

插入带有换行符的字段

来自分类Dev

C语言中的怪异问题

来自分类Dev

PHP printf换行符

来自分类Dev

C语言中&&的行为

来自分类Dev

BASH printf数组,在最后一个条目上带有字段分隔符和换行符

来自分类Dev

perl,具有s ///的怪异行为

来自分类Dev

C语言中带有printf和多维数组的7段显示

来自分类Dev

Perl怪异的Chomp和换行符

来自分类Dev

大数组的C ++ / CUDA怪异行为

来自分类Dev

C和ctypes计算的怪异行为

来自分类Dev

C ++ const指针怪异行为