• step4 . day1标准IO和文件IO


    标准IO:ANSI C中定义的一系列用于对IO操作的函数,(只能访问普通文件)

    知识点:流指针:文件的操作,标准IO通常通过一个FILE的结构体,称这个结构体为流,他的指针称为流指针(系统自动打开的流:标准输出stdout 标准输入stdin,标准出错stderr),全缓冲、行缓冲、无缓冲fflush

    相关函数:fopen  fcloes  perror  strerror  fgetc/fputc  fgets/fputs  getchar/putchar   gets/puts   fread/fwrite   fseek(可以创建指定大小文件)  ftell    rewind  fscanf sscanf  fprintf  sprintf  ferror feof

    time localtime ctime  sleep  

    文件IO:  低级磁盘IO,无缓冲模式,遵循POSIX标准,可以访问其他种类文件

    知识点:文件描述符,和流指针类似,是一个整数表示这个文件的描述

    相关函数:open close  read  write  lseek 

    目录操作相关函数:pendir  readdir closedir  chmod  fchmod  stat  fstat   getpwuid   getgrpid

    这么多函数根本记不全的,放弃吧,一边编程一边看man手册,用着用着就记住了。。。。。

    代码:四种模式的文件复制

    1.字符复制


    #include<stdio.h>

    int main(int argc, const char *argv[])
    {
    if(argc<3){
    printf("Usmsg: %s <src_file> <des_file> ",argv[0]);
    return -1;
    }
    FILE *fps,*fpd;
    if((fps = fopen(argv[1],"r")) == NULL){
    perror("src_file fopen");
    return -1;
    }
    if((fpd = fopen(argv[2],"w+")) == NULL){
    perror("des_file fopen");
    return -1;
    }

    char ch;
    while((ch = fgetc(fps)) != -1){
    fputc(ch,fpd);
    }

    fclose(fps);
    fclose(fpd);
    return 0;
    }

    2. 行复制


    #include <stdio.h>


    #define N 32

    int main(int argc, const char *argv[])
    {
    if(argc<3){
    printf("Usrmsg:%s <file_name> <file_name> ",argv[0]);
    return -1;
    }
    FILE *fps,*fpd;
    if((fps = fopen(argv[1],"r")) == NULL){
    perror("src fopen");
    return -1;
    }
    if((fpd = fopen(argv[2],"w")) == NULL){
    perror("dec fopen");
    return -1;
    }
    char buf[N];
    while(fgets(buf,N,fps) != NULL){
    fputs(buf,fpd);
    }
    fclose(fps);
    fclose(fpd);


    return 0;
    }

    3.按照对象复制


    #include<stdio.h>

    int main(int argc, const char *argv[])
    {
    if(argc<3){
    printf("Usrmsg:%s <file_name> <file_name> ",argv[0]);
    return -1;
    }

    FILE *fps,*fpd;
    if((fps = fopen(argv[1],"r")) == NULL){
    perror("src fopen");
    return -1;
    }
    if((fpd = fopen(argv[2],"w")) == NULL){
    perror("des fopen");
    return -1;
    }

    char buf[64];
    int n;
    while((n = fread(buf,1,64,fps)) > 0){
    fwrite(buf,1,n,fpd);
    }

    fclose(fps);
    fclose(fpd);

    return 0;
    }

    4.文件IO复制


    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>


    int main(int argc, const char *argv[])
    {
    if(argc<3){
    printf("Usrmsg:%s <File_name> <File_name> ",argv[0]);
    }

    int fds,fdd,n;
    char buf[64];

    if((fds = open(argv[1],O_RDONLY))== -1 ){
    perror("opensrc");
    return -1;
    }
    if((fdd = open(argv[2],O_WRONLY | O_CREAT | O_TRUNC,0666 ))== -1 ){
    perror("opendes");
    return -1;
    }

    while((n = read(fds,buf,64))>0){
    write(fdd,buf,n);
    }
    close(fds);
    close(fdd);

    return 0;
    }

  • 相关阅读:
    网络基础之网络协议篇
    JVM-07-执行引擎
    JVM-06-对象实例化、内存布局、访问定位以及直接内存
    JVM-05-方法区
    JVM-04-堆
    JVM-03-本地方法接口和本地方法栈
    JVM-02-程序计数器 虚拟机栈
    JVM-01-类加载子系统
    JVM-00-引言
    swagger
  • 原文地址:https://www.cnblogs.com/huiji12321/p/11293697.html
Copyright © 2020-2023  润新知