当前位置: 代码迷 >> C语言 >> 关于printf函数.大家请看看.............
  详细解决方案

关于printf函数.大家请看看.............

热度:253   发布时间:2008-05-17 03:41:39.0
你还真有耐心,把354,90两个值凑出来了。

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

printf的调用必然会改写堆栈,我讨论的问题反映在19楼第二个程序中。需要解释这句话的作用:
puts("此次IO后可以正常输出I love you!,注释本行后输出出错");
----------------解决方案--------------------------------------------------------
在int __cdecl _stbuf ( FILE *str )函数里:
if ( (_stdbuf[index] == NULL) && ....)

这个结果满意不?

[color=white]

[[it] 本帖最后由 Q1007665007 于 2008-5-17 04:12 编辑 [/it]]
----------------解决方案--------------------------------------------------------
佩服,我是分析了好久才发现的
----------------解决方案--------------------------------------------------------
就算不去看源代码也能猜得出了,它总是第一次调用才去分配缓冲
并且不光是C输入输出,其它的如C++输入输出一样可以构造出一样结果的代码

[color=white]
----------------解决方案--------------------------------------------------------
/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
#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]
----------------解决方案--------------------------------------------------------
o(∩_∩)o...
对于标准IO缓冲,我也是知道的,只是刚看到楼主程序时没想到是这个造成的。
我分析问题的思路是:第一次调用printf对后面再次调用有影响,所以两次调时库函数做了不同的工作,然后记起初次调用时要分配缓冲,经过跟踪发现果真如此,这才敢确定。

貌似你现在心态平和了些,我想现在的状态更讨人喜欢吧o(∩_∩)o...
刚洗澡回来,要睡觉了。劝一句,女孩子不要熬这么晚不休息。
----------------解决方案--------------------------------------------------------
我心态要是平和我就不会这么晚还不休息
刚刚又更新了高亮软件,容错力越来越强,现在连头文件名折行也能完美解决了
不过我现在已经不想发出来了,学到的东西不分享也就罢了
总觉得有的时候,人的自私是被某些小人逼的
----------------解决方案--------------------------------------------------------
自私学不好编程。
----------------解决方案--------------------------------------------------------
翅膀你又在逗燕子了...脑袋中冒出一句话:燕子靠翅膀飞翔..晕,怎么会有这个想法呢..

[[it] 本帖最后由 sunkaidong 于 2008-5-17 10:46 编辑 [/it]]
----------------解决方案--------------------------------------------------------
本来对这个帖子快失去信心了,不过今天偶尔来看,发现两位居然回复了这么多.......
谢谢你们的支持!!!!!!

继续关注哦!!不过我也得好好学习了!!
----------------解决方案--------------------------------------------------------
  相关解决方案