gets函数有问题?
来源:互联网 发布:淘宝上卖盗版书的店铺 编辑:程序博客网 时间:2024/05/17 02:39
最近在学习gets函数时,遇到了一点小问题,当时有点想不通,代码如下:
#include <stdio.h>int main(){char a,b,c,d,e,f;printf("%p\t%p\n",&a,&f);gets(&a);putchar(a);putchar(b);putchar(c);putchar(d);putchar(e);putchar(f);return 0;}
执行结果是这样的:
我的本意是知道了一段内存的首地址,就可以使用gets函数输入数据,可是输出的结果
却出乎我的初衷。理论上,我输入“123456”,他应该正序输出“123456”,为什么结果
却是“134562”。起初,我以为是gets函数出了问题,可是我写了以下代码,就恍然大悟了!
#include <stdio.h>int main(){char a,b,c,d,e,f;gets(&a);putchar(a);putchar(b);putchar(c);putchar(d);putchar(e);putchar(f);putchar('\n');return 0;}
编译后执行结果是:
这是按照正常情况输出了,所以说,gets函数是没有问题的。问题主要是在那个printf语句,
大家知道,在c中,局部变量实际使用时分配内存的,声明时是不分配内存的。所以第一个
程序使用了printf打印了变量a和f的地址,所以在gets之前,我们发现,他们的地
址是连续的。所以说,gets函数把第一个,第二个数据分别存储到变量a和f中,在
之后,才把后面的数据依次存储到剩余的变量当中。明白了这些,我写了另一个例子:
#include <stdio.h>int main(){char a,b,c,d,e,f;printf("%p\t%p\t%p\n",&a,&b,&f);gets(&a);putchar(a);putchar(b);putchar(c);putchar(d);putchar(e);putchar(f);return 0;}
执行结果如下:
正验证了我的想法,呵呵
- gets函数有问题?
- gets有问题
- gets函数的问题
- gets () 函数
- gets函数
- gets函数
- gets()函数
- gets函数
- gets()函数
- Gets函数
- 一次有关字符串读取函数gets()问题的调试
- linux c 语言gets函数出现的警告问题
- 处理Linux下gets()字符输入函数不能运行问题
- gets()函数puts()函数
- gets() 和scanf()函数
- gets函数的漏洞
- gets和fgets函数
- gets()函数使用
- html基础语法总结
- linux 通过 设置配置文件修改mysql的默认编码
- JQUERY 图片幻灯片效果插件
- 伪终端设备之我见
- 变量类型转换
- gets函数有问题?
- SharePoint2010单点登录(转)
- 写好代码 [comments after India project]
- OGRE中表情动画导入存在的问题
- C# WinForm 文件上传下载
- 漂亮的左右滑动的案例
- HIS功能划分图
- Photoshop自由变换图形大小
- tizen开发(3)