C语言中关于地址作返回值以及printf的缓冲刷新问题.doc_第1页
C语言中关于地址作返回值以及printf的缓冲刷新问题.doc_第2页
C语言中关于地址作返回值以及printf的缓冲刷新问题.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言中关于地址作返回值以及printf的缓冲刷新问题程序源码:#includechar * itoa(unsigned int count)char s32;char *t;char hex = 0123456789ABCDEF;int i,j=0,length = 0;char tmp;t = s;while(count)i = count % 10;sj = hexi;j+;count = count /10;sj = 0;while(*t)t+;length+;t-;for(i = 0 ;i length /2;i+)/printf(%c=%d=%cn,si,i,*t);tmp = si;si = *t;*t = tmp;t-;t = s;printf(%sn%sn,t,s);return t;int main()unsigned int i = 12345;char * sh = itoa(i);printf(%s,sh);以上代码是整形转化成字符型,不要问我为什么不用c库函数,因为我写的是裸机用的,不要问我为什么不申请堆,因为我写的是裸机用的。好上述代码的思想上是没有问题的,就是通过不断除以10取余数进行赋值,然后进行字符串的倒序。最终完成了指针t或者s,返回,调用,打印。下面是结果:意思是说调用之前可以打印,说明字符指针是创建对了,但是调用的时候出现乱码,于是笔者进行了各种常识。最终找到错误所在。分析如下:子函数被调用的时候,在子函数的局部变量会在函数执行之后被销毁。所以返回值是没有的。所以不会打印东西。但是为什么还能打印一部分呢?这就涉及到另一个问题:printf的缓冲刷新问题。看下面两个程序:程序1:Int main()Printf(“aaa”);While(1);程序2:Int main()Printf(“aaan”);While(1);两个程序执行结果不同,第一个没有打印aaa,第二个打印了aaaprintf只有当缓冲区满

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论