C语言 "w+" "a+"《文件读写》 c语言之fopen参数(r+,w+,a+)

经查找一些资料,并且亲自实验之后得出:

r+:打开已存在的文件时,光标位于开头,文件可读,可写,

  写数据时,由于光标位于开头,所以会覆盖原有数据

w+:打开的文件已存在时,将覆盖原文件

a+:打开已存在的文件时,光标位于文件尾,文件可读,可写

  读数据时,光标会回到开头

FILE *Binfid;
h_u32 framenum = 0;
h_s32 frameformat = 0;
char filename_last[256] = "output.txt";
void vs_printf_open(char filename[], int framenum1, int format)
{
    int temp_str = 0;
    temp_str = strcmp(filename, filename_last); // strcmp返回的规律是什么?

    do
    {
        if (temp_str != 0)
        {
            Binfid = fopen(filename, "w+");
        }
        else
        {
            Binfid = fopen(filename, "a+");
        }
    } while (Binfid == NULL); // 为什么写成 do while???
    if (Binfid == NULL)
    {
        printf("this is error!\r\n");
    }
    framenum = framenum1;
    frameformat = format;
    memcpy(filename_last, filename, sizeof(char) * 256); // 保证每一帧切换时,是添加
}

经查找一些资料,并且亲自实验之后得出:

r+:打开已存在的文件时,光标位于开头,文件可读,可写,

  写数据时,由于光标位于开头,所以会覆盖原有数据

w+:打开的文件已存在时,将覆盖原文件

a+:打开已存在的文件时,光标位于文件尾,文件可读,可写

  读数据时,光标会回到开头

FILE *Binfid;
h_u32 framenum = 0;
h_s32 frameformat = 0;
char filename_last[256] = "output.txt";
void vs_printf_open(char filename[], int framenum1, int format)
{
    int temp_str = 0;
    temp_str = strcmp(filename, filename_last); // strcmp返回的规律是什么?

    do
    {
        if (temp_str != 0)
        {
            Binfid = fopen(filename, "w+");
        }
        else
        {
            Binfid = fopen(filename, "a+");
        }
    } while (Binfid == NULL); // 为什么写成 do while???
    if (Binfid == NULL)
    {
        printf("this is error!\r\n");
    }
    framenum = framenum1;
    frameformat = format;
    memcpy(filename_last, filename, sizeof(char) * 256); // 保证每一帧切换时,是添加
}

猜你喜欢

转载自www.cnblogs.com/focus-z/p/11262733.html