read 不会设置缓冲区最后一个字节为 '\0'
来源:互联网 发布:淘宝拍图片用什么相机 编辑:程序博客网 时间:2024/06/06 12:44
有时候会对 read 和 fscanf 等读入内容到缓冲区, 在输入内容大于缓冲区时, 是否会自动将最后一个字节设置为 '\0' 犹豫.
在这里测试下.
#include <stdio.h>#define LEN 3int main(int argc, char *argv[]){char buf[LEN];char buf2[LEN] = {'\0'};read(0, buf, LEN);printf("%c\n", buf[LEN-1]);printf("buf:%s\n", buf);printf("buf2:%s\n", buf2);return 0;}
输入: abcd
输出:
c
buf:abc??
buf2:
可见read并不会设置最后一字节内容为 '\0', 输出出现乱码.
下面测试 scanf
#include <stdio.h>#define LEN 3int main(int argc, char *argv[]){char buf[LEN];char buf2[LEN] = {'\0'};fgets(buf, LEN, stdin);printf("%c\n", buf[LEN-1]);printf("buf:%s\n", buf);printf("buf2:%s\n", buf2);return 0;}
输入: abcd
输出:
buf:ab
buf2:
可见 scanf之类的字符串处理函数会自动将缓冲区的最后一字节设置为 '\0'.
这些其实都是一些很基本的知识, 但因为较久不读书和以前没有细心, 竟不是很清楚了.看来得反思了.
- read 不会设置缓冲区最后一个字节为 '\0'
- fragment不会保留最后一个
- 自定义字节流缓冲区read(),write()的特点
- 为循环中的最后一个值设置相关内容
- 段界限是指的段内最大偏移值,第1个字节偏移为0,最后一个则偏移为长度-1了。
- 自定义一个字节缓冲区的简单示例
- IO流__【字节流】【字节流缓冲区】【read和write特点】
- 最近公司项目需要实现微信的@ 功能,如何判断@前的最后一个字节是什么格式,因为阿拉伯数字和英文字母是不会跳转提醒的
- 阶乘 最后一个不为0的数
- 【I2C设备驱动】必须将id_table[]数组的最后一个元素设置为空的原因
- IO流三:字节流文件读写操作、拷贝图片、带缓冲区的字节流、read()原理、读取键盘录入
- SHSetValue 最后一个参数字节数是否要加上\0验证
- Java 缓冲区续:字节缓冲区
- 文件字节倒写是使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节。
- c++类不含有数据成员(静态除外),则不会为该类实例分配存储空间,该类实例只占用一个字节空间
- execlp最后一个参数必须为空
- 环形字节缓冲区源代码
- Socket接收字节缓冲区
- jquery事件对象属性
- 项目管理实践教程一 工欲善其事,必先利其器
- hdu3873带节点保护的最短路
- HDU 4311 4312 Meeting point 平面上的Manhattan距离和Chebyshev距离
- 视频格式与文件常用名词解释与入门
- read 不会设置缓冲区最后一个字节为 '\0'
- 2012年上半年的系统分析师考试小结
- Android之apk文件签名——keytool 和 jarsigner
- Android开发环境的搭建
- 中国历史[图]
- 数据结构----各种排序算法的比较
- c++类对象和指针的区别
- HDOJ 2473 Junk-Mail Filter(并查集 要用到代理的思想)
- 有关接口的那些事