| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3219 人关注过本帖
标题:关于printf函数.大家请看看.............
只看楼主 加入收藏
VxWorks
Rank: 3Rank: 3
来 自:WindRiver
等 级:论坛游民
威 望:6
帖 子:859
专家分:68
注 册:2007-11-24
收藏
得分:0 
你还真有耐心,把354,90两个值凑出来了。

我想说明的是在char a[100]的情况下,在返回地址前进行io对程序造成不同影响的原因。
讨论的前提是test中的auto数据为int i和char a[100],楼主问的问题正是调用printf的影响,请看1楼。

printf的调用必然会改写堆栈,我讨论的问题反映在19楼第二个程序中。需要解释这句话的作用:
puts("此次IO后可以正常输出I love you!,注释本行后输出出错");

为了防止世界被破坏,为了守护世界的和平,贯彻爱与真实的邪恶,可爱又迷人的反派角色,VxWorks!
Don't ask me any question.I'm just here to buy soy sauce.
2008-05-17 03:41
Q1007665007
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-5-16
收藏
得分:0 
在int __cdecl _stbuf ( FILE *str )函数里:
if ( (_stdbuf[index] == NULL) && ....)

这个结果满意不?

[color=white]

[[it] 本帖最后由 Q1007665007 于 2008-5-17 04:12 编辑 [/it]]

QQ1007665007
QQ群61762856
2008-05-17 04:10
VxWorks
Rank: 3Rank: 3
来 自:WindRiver
等 级:论坛游民
威 望:6
帖 子:859
专家分:68
注 册:2007-11-24
收藏
得分:0 
佩服,我是分析了好久才发现的

为了防止世界被破坏,为了守护世界的和平,贯彻爱与真实的邪恶,可爱又迷人的反派角色,VxWorks!
Don't ask me any question.I'm just here to buy soy sauce.
2008-05-17 04:12
Q1007665007
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-5-16
收藏
得分:0 
就算不去看源代码也能猜得出了,它总是第一次调用才去分配缓冲
并且不光是C输入输出,其它的如C++输入输出一样可以构造出一样结果的代码

[color=white]

QQ1007665007
QQ群61762856
Q1007665007
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-5-16
收藏
得分:0 
/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http:// **
*****************************************************************/
#include <iostream.h>
char  *test(char *p)
{
   
char a[333]="I love you!";
    p=a;
    return(p);
}
int main(void)
{
   
char *p, *q;
    p="there is a example";
    //cout<<p<<endl; //注释和不注释这句试试看
   
q=test(p);
    cout<<q<<endl;
    return 0;
}


[color=white]

QQ1007665007
QQ群61762856
VxWorks
Rank: 3Rank: 3
来 自:WindRiver
等 级:论坛游民
威 望:6
帖 子:859
专家分:68
注 册:2007-11-24
收藏
得分:0 
o(∩_∩)o...
对于标准IO缓冲,我也是知道的,只是刚看到楼主程序时没想到是这个造成的。
我分析问题的思路是:第一次调用printf对后面再次调用有影响,所以两次调时库函数做了不同的工作,然后记起初次调用时要分配缓冲,经过跟踪发现果真如此,这才敢确定。

貌似你现在心态平和了些,我想现在的状态更讨人喜欢吧o(∩_∩)o...
刚洗澡回来,要睡觉了。劝一句,女孩子不要熬这么晚不休息。

为了防止世界被破坏,为了守护世界的和平,贯彻爱与真实的邪恶,可爱又迷人的反派角色,VxWorks!
Don't ask me any question.I'm just here to buy soy sauce.
Q1007665007
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-5-16
收藏
得分:0 
我心态要是平和我就不会这么晚还不休息
刚刚又更新了高亮软件,容错力越来越强,现在连头文件名折行也能完美解决了
不过我现在已经不想发出来了,学到的东西不分享也就罢了
总觉得有的时候,人的自私是被某些小人逼的

QQ1007665007
QQ群61762856
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
自私学不好编程。

专心编程………
飞燕算法初级群:3996098
我的Blog
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
翅膀你又在逗燕子了...脑袋中冒出一句话:燕子靠翅膀飞翔..晕,怎么会有这个想法呢..

[[it] 本帖最后由 sunkaidong 于 2008-5-17 10:46 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
收藏
得分:0 
本来对这个帖子快失去信心了,不过今天偶尔来看,发现两位居然回复了这么多.......
谢谢你们的支持!!!!!!

继续关注哦!!不过我也得好好学习了!!

前不见古人,后不见来者。念天地之悠悠,独怆然而涕下。
快速回复:关于printf函数.大家请看看.............
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015972 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved