VS2017文件操作之使用fopen函数总结

fopen中mode参数 r, w, a, r+, w+, a+ 具体区别

r : 只能读, 必须存在, 可在任意位置读取

w : 只能写, 可以不存在, 必会擦掉原有内容从头写

a : 只能写, 可以不存在, 必不能修改原有内容, 只能在结尾追加写, 文件指针无效

r+ : 可读可写, 必须存在, 可在任意位置读写, 读与写共用同一个指针

w+ : 可读可写, 可以不存在, 必会擦掉原有内容从头写

a+ : 可读可写, 可以不存在, 必不能修改原有内容, 只能在结尾追加写, 文件指针只对读有效 (写操作会将文件指针移动到文件尾)

 

r+ 和 w+ 的区别:

 r+ 是可以直接写在文件上,读取和写入的光标都在文件开头。

 w+ ,如果文件已经存在,将建立一个新文件覆盖原文件(很缺德啊……),并且支持读取。

 

a+ 和 r+:

 a+只能在文件最后补充,光标在结尾。

 r+可以覆盖前面的内容,光标在开头

 

VS2017的例子:

#include "pch.h"

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <stdio.h>
#include <stdarg.h>
#include <time.h> 
int write_log (FILE* pFile, const char *format, ...) 
{    
    va_list arg;    
    int done;     
    va_start (arg, format);    
    //done = vfprintf (stdout, format, arg);     
    time_t time_log = time(NULL);    
    struct tm* tm_log = localtime(&time_log);    
    fprintf(pFile, "%04d-%02d-%02d %02d:%02d:%02d ", tm_log->tm_year + 1900, tm_log->tm_mon + 1, tm_log->tm_mday, tm_log->tm_hour, tm_log->tm_min, tm_log->tm_sec);     
    done = vfprintf (pFile, format, arg);    
    va_end (arg);     
    fflush(pFile);    
    return done;

int main() 
{    
    FILE* pFile = fopen("123.txt", "a+");    
    write_log(pFile, "%s %d %f\n", "is running", 10, 66.66);    
    fclose(pFile);     
    return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值