C语言文件(文本文件和二进制文件)读写

//允许使用过时的函数和不安全的函数,去掉警告
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//内容一:读取文件(文本文件)
/*
int main(){
    char file_path[] = "C:\\Users\\Administrator\\Desktop\\aa.txt";
    //r w  rw
    FILE *file = fopen(file_path,"r");
    //判断一下文件是否为空
    if (file == NULL){
        printf("当前文件不存在");
        return 0;
    }
    //存在---读取内容
    //定义缓冲区(C++,Java,OC,Swift,ASP.NET)
    char buffer[100];
    //参数一:代表缓冲区
    //参数二:每次读取的长度(注意:不能超过缓冲区的大小),
    //参数三:源文件
    //返回值:字符指针(如果返回'\0',否则存在)
    while (fgets(buffer,100,file)){
        //打印 
        //注意:不需要加换行符
        //在我们的C语言中,文本文件和二进制文件
        printf("%s",buffer);
    }
    //关闭流
    fclose(file);
    getchar();
    return 0;
}    
*/

//内容二:写入文件 --(文本文件)
/*
int main(){
    //写文件的路径
    char file_path[] = "C:\\Users\\Administrator\\Desktop\\a.txt";
    //首先需要打开文件
    FILE *file = fopen(file_path, "w");
    //字符串(字符数组)
    char content[] = "I Have a Dream";
    //参数一:写入的内容
    //参数二:源文件
    fputs(content,file);
    //关闭流
    fclose(file);
    getchar();
    return 0;
}
*/

//内容三:二进制文件的读取
//计算机中分为了二进制文件和文本文件(逻辑上划分)
//对于计算机本身而言都是二进制
//二进制和文本文件区别?
//答:就在于换行符不一样
//文本文件:写入文件,每当遇到'\n',会将其转成'\r\n'(回车换行)
//         读取文本:每当遇到'\r\n',就会将其转成'\n'
//二进制文件:复制(类似于java)
/*
int main(){
    //将文件的内容写到另一个文件中(边读边写)
    //定义源文件
    char old_file_path[] = "C:\\Users\\Administrator\\Desktop\\test.txt";
    //定义目标文件
    char new_file_path[] = "C:\\Users\\Administrator\\Desktop\\test_new.txt";
    //打开源文件
    //rb:代表读取二进制文件
    FILE *old_file_p = fopen(old_file_path,"rb");
    //打开目标文件
    //wb:代表写入二进制文件
    FILE *new_file_p = fopen(new_file_path, "wb");
    //边读边写
    //定义缓冲区
    int buffer[50];
    //记得我们在Java中读取文件的时候,我们是不是得定义一个读取多长
    //C语言和Java一样
    int len = 0;
    //fread方法参数一:代表缓冲区
    //         参数二:单位大小
    //         参数三:每次读取的长度
    //         参数四:源文件
    while((len = fread(buffer,sizeof(int),50,old_file_p))!=0){
        //写入到目标文件
        //参数一:缓冲区
        //参数二:单位大小
        //参数三:每次读取的长度
        //参数四:目标文件
        fwrite(buffer,sizeof(int),len,new_file_p);
    }
    //关闭流
    fclose(new_file_p);
    fclose(old_file_p);
    getchar();
    return 0;
}
*/
//内容四:获取文件的大小
int main(){
    //定义源文件(25字节)
    char old_file_path[] = "C:\\Users\\Administrator\\Desktop\\test.txt";
    //打开文件
    FILE *file = fopen(old_file_path,"rb");
    //在C语言中可以将指针指向最后一个字节
    //通过一个函数,将文件指针移动到文件的最后一个位置

    //参数一:源文件 
    //参数二:偏移量(倒数第几个)   右:+1  后(左):-1
    //参数三:位置标记(SEEK_END:表示文件指针移动到最后一个位置)
    //一旦调用这个方法,指针立马移动到指定的位置
    fseek(file,0,SEEK_END);
    //获取到文件的大小:ftell(当前文件指针指向的位置)
    long fileSize = ftell(file);
    printf("文件大小:%ld:\n",fileSize);
    getchar();
    return 0;
}

 

//获取文件的长度:

int main(){
    //定义源文件(25字节)
    char old_file_path[] = "C:\\Users\\Administrator\\Desktop\\test.txt";
    //打开文件
    FILE *file = fopen(old_file_path,"rb");
    //在C语言中可以将指针指向最后一个字节
    //通过一个函数,将文件指针移动到文件的最后一个位置

    //参数一:源文件 
    //参数二:偏移量(倒数第几个)   右:+1  后(左):-1
    //参数三:位置标记(SEEK_END:表示文件指针移动到最后一个位置)
    //一旦调用这个方法,指针立马移动到指定的位置
    fseek(file,0,SEEK_END);
    //获取到文件的大小:ftell(当前文件指针指向的位置)
    long fileSize = ftell(file);
    printf("文件大小:%ld:\n",fileSize);
    getchar();
    return 0;
}

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值