关闭

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

标签: Linux C语言ubuntuc
228人阅读 评论(1) 收藏 举报
分类:

在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方式更为简单。



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1329次
    • 积分:62
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章分类
    文章存档