zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    jdbc学习一半的代码
    实验室的毕业照
    IOS_地图_定位_天气预报_Block回调_单例
    POJ -1062 昂贵的聘礼(前向星 && SPFA)
    【监控】Nagios-NRPE脚本返回值
    cocos2d-x-3.0 Windos 新建项目(coco2d-x 学习笔记一)
    托付与事件
    Netty源代码学习——EventLoopGroup原理:NioEventLoopGroup分析
    vs2013 error c4996: 'fopen': This function or variable may be unsafe
    Customize User Interfaces and Pass User Input to Installer Classes
  • 原文地址:https://www.cnblogs.com/huiji12321/p/11293697.html
Copyright © 2011-2022 走看看