文件编程(二)

1.文件编程练习1

实现linux cp命令的代码

复制代码
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>


int main(int argc,char **argv){
        int fdSrc;
        int fdDes;
        char *readBuf = NULL;

        if(argc != 3){
                printf("error");
                exit(-1);
        }

        fdSrc = open(argv[1],O_RDWR);

        int size = lseek(fdSrc,0,SEEK_END);
        readBuf = (char *)moalloc(sizeof(char)*size + 8);
        lseek(fdSrc,0,SEEK_SET);
        int n_read = read(fdSrc,readBuf,size);

        fdDes = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);

        int n_wirte = write(fdDes,readBuf,strlen(readBuf));

        close(fdSrc);
        close(fdDes);
        return 0;
}
复制代码

2.文件编程练习2

修改程序的配置文件

复制代码
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>


int main(int argc,char **argv){
        int fdSrc;
        char *readBuf = NULL;

        if(argc != 2){
                printf("error");
                exit(-1);
        }

        fdSrc = open(argv[1],O_RDWR);
        int size = lseek(fdSrc,0,SEEK_END);
        readBuf= (char *)malloc(sizeof(char)*size +8);

        int n_read = read(fdSrc,readBuf,size);

        char *p = strstr(readBuf,"LENG=");
        if(p == NULL){
                printf("not found\n");
                exit(-1);
        }
        p = p+strlen("LENG=");
        *P = '5';


        int n_wirte = write(fdSrc,readBuf,strlen(readBuf));

        close(fdSrc);
        return 0;
}
复制代码

3.文件如何记录一个结构体

复制代码
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>


struct Test
{
        int a;
        char b;
};

int main()
{
        int fd;
        int i;

        struct Test data[2] = {{100,'a'},{200,'c'}};
        struct Test data2[2];

        fd = open("./file5",O_RDWR|O_CREAT|O_TRUNC);

        int n_wirte = write(fd,&data,sizeof(struct Test)*2);

        lseek(fd,0,SEEK_SET);

        int n_read = read(fd,&data2,sizeof(struct Test)*2);

        for(i=0;i<2;i++){
                printf("read : %d ,%c \n",data[i].a,data[i].b);
        }
        close(fd);
        return 0;
}
复制代码

4.标准c库对文件操作引入

open 和fopen
open是unix系统调用函数
fopen是标准c语言库函数

复制代码
#include<stdio.h>
#include<string.h>

int main()
{
        FILE *fp;
        cahr *str = "linqilaoshi hen shuai";
        char readBuf[128] = {0};

        fp = fopen("./zhang.text","w+");
        
        fwrite(str,sizeof(char),strlen(str),fp);

        fseek(fp,0,SEEK_SET);

        fread(readBuf,sizeof(char),strlen(str),fp);

        printf("read data:%s\n",readBuf)

        fclose(fp);

        return 0;
}
复制代码

5.文件其他函数讲解

fputc()
feof()
fgetc()

posted @   林奇老师  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示