linux系统下的c编程——my first program
来源:互联网 发布:c语言中return的用法 编辑:程序博客网 时间:2024/05/21 22:37
今天学习了在linux如何写复制文件的函数,在学习了书上一些基础的库函数和语句后,我自己编写了一个复制文件的函数,虽然过程有些坎坷,但写完还是觉得自己棒棒哒~
#include <stdio.h>#include<sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#define PERMS 0666#define DUMMY 0#define BUFSIZE 1024main(int argc,char *argv[]) //要求用户用cp格式输入命令(cp替换为./a.out){ int source_fd,target_fd,num; char iobuffer[BUFSIZE]; if(argc!=3) //若输入格式正确(./a.out os.c b.c,os.c为源文件,b.c为新文件),则可以开始打开文件 { printf("复制功能打开失败"); return 1; } if((source_fd=open(*(argv+1),O_RDONLY,DUMMY))==-1) //打开源文件失败open函数会返回-1,将open函数返回的值赋给文件描述符 { printf("1文件打开失败"); return 2; } if((target_fd=open(*(argv+2),O_WRONLY|O_CREAT,PERMS))==-1) //我的文件夹里没有b.c文件,所以会自动建立b.c文件,建立成功返回-1 { printf("2文件打开失败"); return 3; } while((num=read(source_fd,iobuffer,BUFSIZE))>0) //将源文件里的内容读到iobuffer中,若返回值小于0,则读完文件,跳出循环 if(num!=write(target_fd,iobuffer,num)) //读的字节数要和写入的字节数保持一致,否则出错,跳出程序 { printf("文件复制错误"); return 4; } close(source_fd); //复制完成,关闭源文件 close(target_fd); //复制完成,关闭新文件}
但是运行结果貌似有点问题呢。。
最后几行好像不见了。。
(昨天没有写完)今天回来改错,却发现错误奇迹的自己好了。。
但是我发现了一个新的问题,就是已经写过的文件不能重新写入,也就是内容不可以覆盖,于是我重新检查了一遍代码,我发现我的write函数里少了一个参数O_TRUNC
这个参数是如果文件存在,则该文件截断
的意思,也就是可以覆盖已经存在的文件,因为少了这个参数,所以不可以覆盖。
加了这个参数就对了,已经创建的文件也可以覆盖粘贴。
0 0
- linux系统下的c编程——my first program
- QuickSort(C#) -- My First C# Program
- My First RMI Program
- My First Java Program...
- MY FIRST C++ PROGRAM
- my first java program
- My First Akka Program
- my first C++ program
- first step in order to optimization of my C program
- This is my first program
- My First Game Cheating Program
- My first OPENGL little program
- Linux系统下的c语言编程
- linux系统下的c编程——linux文件系统构成及文件类型
- first program by c
- linux下c系统编程
- My first Icon to Tray program
- [Source Code] My First Python Program
- Linux系统误操作之-文件权限介绍和恢复分享
- HDU-5667 Sequence (矩阵快速幂)
- 集成病毒数据查询
- 适应“变” 终将“蝶变”| 浅谈云视互动融智服务云与企业营销
- HttpClient请求数据的封装
- linux系统下的c编程——my first program
- 通过jdbc向数据库中插入数据,并对密码进行加密
- Array,Collection,Map的浅析
- python文件读写
- php面试题之四——PHP面向对象(基础部分)
- 使用 matlab 数字图像处理(九)—— 去卷积(deconvolution,逆滤波复原)
- H.264码流结构解析
- 新视图RecyclerView(一)
- #OC---一些基本概念