printf(str)转 python unicode转str

原文:http://blog.sina.com.cn/s/blog_514885cf0100thxk.html

在书上看见这么一段:

#include <stdio.h>

int main(void)
{
const char *p = "abcd";
const char str1[5] = "abcd";
char str2[5] = "abcd";

printf(p);
printf(str1);
printf(str2);


return 0;
}

突然就搞不懂printf(str)跟printf("%s", str)的区别和联系了。

百度了一下,这种用法其实跟printf("hello,world.n")是类似的,printf函数的第一个参数是constchar*类型的,不管是printf("abcd")还是printf(str),效果都是一样的,就是像printf函数传递了一个constchar*的地址,然后printf按照这个地址打印出里面的内容。
可参考man里面的printf:
SYNOPSIS
#include<stdio.h>
int
printf(constchar *format, ...);

int
printf(str)(转) python unicode转str
fprintf(FILE*stream, const char *format, ...);


只是const char *p = "hello, world"以后再

printf(p)跟printf("%s",p)的效果是一样的,但平常为什么不见printf(p)这种看起来很简洁的形式呢,百度了一下,是这个原因:

#include <stdio.h>

int main(void)
{
char *str = "A string with % may not work.n";

printf("%s", str);
printf(str);

char *str2 = "i want to print %dn";
printf("%s", str2);
printf(str2);

return 0;
}

gcc编译输出的结果是:

A string with % may not work.
A string with Successay not work.
i want to print %d
i want to print 134513794。

我不晓得为啥%会变成Successay,%d是取得一个随机地址,因为穿进去的是空类型的栈的一个随机变量的地址。所以打印出来了。打印百分号估计是因为%取得是系统的一个什么东西,后面一句是个人理解,不确定是否正确

  

爱华网本文地址 » http://www.aihuau.com/a/25101017/328985.html

更多阅读

printf(str)转 python unicode转str

原文:http://blog.sina.com.cn/s/blog_514885cf0100thxk.html在书上看见这么一段:#include <stdio.h>int main(void){const char *p = "abcd";const char str1[5] = "abcd";char str2[5] = "abcd";printf(p);pri

携带超级系统玩转三国 玩转她理财

     女性的浪漫与时尚都是要有钱做支撑的,要想过上好日子,一定要有钱。真正的财女,往往是会花钱、会赚钱,而且会花自己赚的钱。时尚幸福女性最大的特点在于不仅会用自己的聪明才智去赚钱,而且还会有胜人一筹的理财理念与攻略,让财富

如何玩转魔方 玩转项目管理魔方!

     项目管理是项目的管理者,在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效地管理。即从项目的投资决策开始到项目结束的全过程进行计划、组织、指挥、协调、控制和评价,以实现项目的目标。  按

养老保险资金入市 转融通撬动资金入市

     转融通业务本身具有转融资与转融券、做多与做空的双重功能,是一把“双刃剑”。我国从2010年开始推出融资融券业务,其中融资余额占比高达95%。出现这样的现象是由于投资者对避险的考虑,以及绝大多数投资者对做空机制的陌生,融

声明:《printf(str)转 python unicode转str》为网友小丑面具分享!如侵犯到您的合法权益请联系我们删除