linux中描述符和标准IO流对文件的基本操作

在linux中,对于文件的操作可以使用文件描述符来对文件进行操作,也可以使用传统的标准的IO(即VC6.0中所对文件的操作),下面利用一个文件拷贝的程序使用两种方式展示两种文件操作的不同之处。

文件描述符方式:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#define FilePath1 "/home/farsight/dir/aa.txt"
#define FilePath2 "/home/farsight/dir/bb.txt"


int main(int argc,char *argv[]){
int fd1,fd2,fr=0;
int ret1,ret2;
char buf[]={"I Love Linux!"};
char rbuf[4096];
fd1=open(FilePath1,O_RDWR);
if(fd1==-1){
perror("OPEN THE aa.txt");
exit(EXIT_FAILURE);
}
ret1=write(fd1,buf,strlen(buf));
if(ret1==-1){
perror("WRITE THE aa.txt");
exit(EXIT_FAILURE);
}
else{printf("WRITE aa.txt IS SUCCESED!\n");}

fd2=open(FilePath2,O_RDWR|O_CREAT);
if(fd2==-1){
perror("OPEN THE bb.txt");
exit(EXIT_FAILURE);
}
lseek(fd1,0,SEEK_SET);
fr=read(fd1,rbuf,sizeof(buf));
if(fr==0){
printf("COPY IS FAILED!\n");
}
if(fr>0){
write(fd2,buf,fr);
printf("COPY IS SUCCESSED!\n");
close(fd1);
close(fd2);
}

return 0;
}

标准IO方式:

#include<stdio.h>

int main(int argc, char *argv[])  
{
    int c;
    FILE *fp1, *fp2; 
    fp1 = fopen(argv[1], "rb");   
    if(fp1==NULL){
        printf( "Open failure!"); 
        return -1;
    }
    fp2 = fopen(argv[2], "wb");  
    if(fp2==NULL){
        printf("Open failure!");
        return -1;
    }
    while((c=fgetc(fp1))!=EOF){   
        fputc(c, fp2);
    }
    fclose(fp1);  
    fclose(fp2);
    return 0;
}

相比之下,标准IO方式更为简单。



全部评论

相关推荐

10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务