进击的NDK04-文件IO

2018-09-12  本文已影响8人  Rc在努力

读取文本文件

void main(){
    char *path = "J:\\User.xml";
    //打开
    FILE *fp =fopen(path, "r");
    
    if (fp == NULL){
        printf("文件打开失败");
        return;
    }

    //读取s
    char buff[50];//缓冲
    while (fgets(buff, 50, fp)){
        printf("%s", buff);
    }
    fclose(fp);

    getchar();
}

写入文本文件

void main(){
    char * path = "J:\\hello.txt";
    FILE *fp = fopen(path, "w");


    char *text = "2018年9月12日 21:17:44";
    fputs(text, fp);
    
    fclose(fp);
    getchar();
}

计算机的文件存储在物理上都是二进制

文本文件和二进制之分,其实是一个逻辑之分
C读写文本文件与二进制文件的差别仅仅体现在回车换行符
写文本时,每遇到一个'\n',会将其转换成'\r\n'(回车换行)
读文本时,每遇到一个'\r\n',会将其转换成'\n'

文件复制

void main(){
    char *readPath = "J:\\1.jpg";
    char *writePath = "J:\\2.jpg";
        //r读的文件 b字符表示操作二进制文件binary
        FILE *read_fp = fopen(readPath, "rb");
        //写的文件
        FILE * write_fp = fopen(writePath, "wb");
        //复制
        int buff[50]; //缓冲区域
        int len = 0; //每次读到的数据长度
        while ((len = fread(buff, sizeof(int), 50, read_fp)) != 0){
            //将读到的内容写入新的文件
            fwrite(buff, sizeof(int), len, write_fp);
        }
        //关闭流
        fclose(read_fp);
        fclose(write_fp);
        getchar();
}

获取文件的大小

void main(){
    char *read_path = "J:\\1.jpg";
    FILE *fp = fopen(read_path, "r");
    //重新定位文件指针
    //SEEK_END文件末尾,0偏移量
    fseek(fp, 0, SEEK_END);
    //返回当前的文件指针,相对于文件开头的位移量
    long filesize = ftell(fp);
    printf("%d\n", filesize);

    getchar();
}
上一篇 下一篇

猜你喜欢

热点阅读