Linux系统函数write(strlen、sizeof与write结合使用的区别)
来源:互联网 发布:淘宝全屏海报显示不全 编辑:程序博客网 时间:2024/06/05 01:53
环境:Vmware Workstation;CentOS-6.4-x86_64
说明:
1、write(fd, buf, sizeof(buf));和write(fd, buf, strlen(buf));的区别。
2、write(fd, buf, strlen(buf));向文件中写入内容的是,只会把缓冲区中的有效内容全部拷贝到文件中。
3、write(fd, buf, sizeof(buf));会把缓冲区中的所有数据拷贝到文件中。
使用程序说明:
1、编写源文件main.c:
#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>int main(int argc, char *args[]){// 以只写的方式打开两个文件int fd1 = open("a.txt", O_WRONLY);int fd2 = open("b.txt", O_WRONLY);// 定义写入文件需要缓冲区char buf[1024];// 清空缓冲区数据memset(buf, 0, sizeof(buf));// 向缓冲区写入数据strcpy(buf, "hello world");// 把缓冲区数据写入到文件中write(fd1, buf, strlen(buf));write(fd2, buf, sizeof(buf));// 关闭文件close(fd1);close(fd2);return 0;}
2、编写文件makefile:
.SUFFIXES:.c .oCC=gccSRCS=main.cOBJS=$(SRCS:.c=.o)EXEC=mainstart: $(OBJS)$(CC) -o $(EXEC) $(OBJS)@echo "-----------------------------OK-----------------------".c.o:$(CC) -Wall -o $@ -c $<clean:rm -rf $(EXEC) $(OBJS)
3、编译并执行程序,查看文件的大小:
[negivup@negivup mycode]$ touch a.txt 创建文件a.txt[negivup@negivup mycode]$ touch b.txt 创建文件b.txt[negivup@negivup mycode]$ make 编译程序gcc -Wall -o main.o -c main.cgcc -o main main.o-----------------------------OK-----------------------[negivup@negivup mycode]$ ./main 执行程序[negivup@negivup mycode]$ ls -l 查看文件大小总用量 28-rw-rw-r--. 1 negivup negivup 11 9月 19 07:38 a.txt 这个使用的是strlen,文件大小是11,是"hello world"的长度-rw-rw-r--. 1 negivup negivup 1024 9月 19 07:38 b.txt 这个使用的是sizeof,文件大小是1024,刚好是缓冲区的大小-rwxrwxr-x. 1 negivup negivup 7282 9月 19 07:38 main-rw-rw-r--. 1 negivup negivup 1329 9月 19 07:37 main.c-rw-rw-r--. 1 negivup negivup 2096 9月 19 07:38 main.o-rw-rw-r--. 1 negivup negivup 235 9月 19 06:56 makefile
说明:
在使用write向文件中写入数据的时候,一般使用write(fd, buf, strlen(buf));
PS:根据传智播客视频学习整理得出。
0 0
- Linux系统函数write(strlen、sizeof与write结合使用的区别)
- Linux系统函数read()/write()/pread()/pwrite()的区别
- Linux系统函数read()/write()/pread()/pwrite()的区别
- strlen函数与sizeof的区别
- sizeof与strlen函数的区别
- sizeof与strlen函数的区别
- 看过来,strlen()函数与sizeof的区别?????
- sizeof(...)运算符strlen(...)函数的区别与练习
- sizeof和strlen的使用与区别
- Linux系统函数write()函数
- sizeof的使用以及sizeof与strlen的区别
- Linux系统函数write说明
- sizeof() 与 strlen()的区别
- sizeof() 与 strlen()的区别
- strlen与sizeof的区别(转)
- sizeof分析(与strlen的区别)
- sizeof与strlen()的区别
- Sizeof与Strlen的区别(整理)
- Android 图片特效处理:Bipmapshader位图渲染器(CLAMP 、REPEAT 、MIRROR 区别)
- Android 图片特效处理:Shader着色器、渲染
- leetcode 268 Missing Number
- C++的类的声明及成员变量和成员函数
- Activiti入门教程二(熟悉数据库设计)
- Linux系统函数write(strlen、sizeof与write结合使用的区别)
- 黑马程序员——ios开发基础之OC中的Foundation框架(一)
- Java基础——switch、循环语句、控制跳转语句
- Android 自定义九宫格控件Gridview用法以及属性
- Node.js开发入门—UDP编程
- My test program from learning "move constructor", "move assignment". For personal memo purpose.
- 伍子胥
- springmvc文件上传的三种方式
- 夫差