read()函数参数理解
在read()函数⾥,有Linux给出的定义
NAME
read-readfromafiledescriptor
#include
ssize_tread(intfd,void*buf,size_tcount);
fd:⽂件描述符,⽤来指向要操作的⽂件的⽂件结构体
buf:⼀块内存空间
count:希望读取的字节数
返回值表⽰实际读到的字节数(字符串结束符'0'不算)
错误⽤法:
fd=open("./",O_RWONLY)//以只读的⽅式打开⽂件
char*buf;
intn;
count=1024;
n=read(fd,buf,count);
这⾥这种写法是错误的,因为buf现在是在栈⾥的⼀个变量,并没有开辟真正的空间,如果此时讲buf输出,buf存放的是⼀个垃圾值,并没
有指向有效的内存的空间,
在使⽤数组指针的时候要先动态的给数组指针分配空间,
所以,上⾯的代码对于buf的改动可以有两种形式
1./在堆中先给buf开辟空间,使buf指向⼀块有效的内存空间
buf=malloc(count*sizeof(char));//这⾥是buf指向⼀块⼤⼩为count的空间
2.重新定义,在定义的时候,就给buf开辟好内存空间,这⾥注意,buf中实际可以存放1023个字节,'0'结束位占掉⼀个字节
bufcharbuf[1024];
再使⽤read()
n=read(fd,buf,count);
就没有问题了
本文发布于:2022-11-24 18:24:25,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/13476.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |