美文网首页
c语言文件读写 | 按字符,按行,按块

c语言文件读写 | 按字符,按行,按块

作者: yuanCruise | 来源:发表于2019-08-06 22:56 被阅读0次
  • 按字符对文件读写
    fopen(char *,r+):打开文件
    fputc(“c”,FILE *fp):把字符写到fp文件中
    tempc = fgetc(FILE *fp):从fp中获取一个字符串
    feof(FILE *fp):若fp被读取完,则该函数返回1
    fclose(FILE *fp):关闭文件
#define  _CRT_SECURE_NO_WARNINGS 
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

void main01_fputc()
{
    int     i = 0;
    FILE *fp = NULL;
    //char *filename = "c:\\1.txt";
    char *filename2 = "c:/2.txt";  // 统一的用45度 
    char a[27]= "abcdefghijklmn";
    fp = fopen(filename2, "r+");
    if (fp == NULL)
    {
        printf("func fopen() err:%d \n");
        return;
    }
    printf("打开成功\n");

    for (i=0; i<strlen(a); i++)
    {
        fputc(a[i], fp);
    }

    fclose(fp);


    return ;
}

void main02_fgetc()
{
    int     i = 0;
    FILE *fp = NULL;
    //char *filename = "c:\\1.txt";
    char *filename2 = "c:/2.txt";  // 统一的用45度 
    char a[27]= "abcdefghijklmn";
    fp = fopen(filename2, "r+"); //读和写方式
    if (fp == NULL)
    {
        printf("func fopen() err:%d \n");
        return;
    }
    printf("打开成功\n");

    while (!feof(fp))
    {
        char tempc = fgetc(fp);
        printf("%c", tempc);
        
    }

    if (fp != NULL)
    {
        fclose(fp);
    }

    return ;
}


void main11()
{
    //main01_fputc();
    main02_fgetc();
    printf("hello...\n");
    system("pause");
    return ;

}
  • 按行对文件读写
    fopen(char *,r+):打开文件
    fputs(“cffdfd”,FILE *fp):把字符串写到fp文件中
    char *p = fgets(buf, 1024, fp):从fp中读取一行,放到buf中,且buf的首地址返回到p
    feof(FILE *fp):若fp被读取完,则该函数返回1
    fclose(FILE *fp):关闭文件
#define  _CRT_SECURE_NO_WARNINGS 
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

void main21_fputs()
{
    int     i = 0;
    FILE *fp = NULL;
    //char *filename = "c:\\1.txt";
    char *filename2 = "c:/22.txt";  // 统一的用45度 
    char a[27]= "abcdefghijklmn";
    //fp = fopen(filename2, "r+");   //读写的方式 打开文件 如果文件不存在 则报错
    fp = fopen(filename2, "w+");   //读写的方式 打开文件 如果文件不存在 则报错
    if (fp == NULL)
    {
        printf("func fopen() err:%d \n");
        return;
    }
    printf("打开成功\n");

    /*
    for (i=0; i<strlen(a); i++)
    {
        fputc(a[i], fp);
    }
    */

    fputs(a, fp);

    fclose(fp);


    return ;
}

/*
char * myfgets(char *myp, int max, FILE *fp)
{
    strcpy(myp, "aaaaaa");
    return myp;
}
*/
void main22_fgets()
{
    int     i = 0;
    FILE *fp = NULL;
    //char *filename = "c:\\1.txt";
    char *filename2 = "c:/22.txt";  // 统一的用45度 
    //char a[27]= "abcdefghijklmn";
    char buf[1024];
    fp = fopen(filename2, "r+"); //读和写方式
    if (fp == NULL)
    {
        printf("func fopen() err:%d \n");
        return;
    }
    printf("打开成功\n");

    //1 //C 函数库 会 一行一行的copy数据 到buf指针所指的内存空间中 并且变成C风格的字符串
    //2 把\n也copy到我们的buf中
    //3 内存打包 (把内存首地址 + 内存的长度)
    while (!feof(fp))
    {
        //_Check_return_opt_ _CRTIMP char * __cdecl fgets(_Out_z_cap_(_MaxCount) char * _Buf, _In_ int _MaxCount, _Inout_ FILE * _File);
        char *p = fgets(buf, 1024, fp);  //C 函数库 会 一行一行的copy数据 到buf指针所指的内存空间中 并且变成C风格的字符串
        if (p == NULL)
        {
            goto End;
        }   
        printf("%s", buf);
    }
End:
    if (fp != NULL)
    {
        fclose(fp);
    }

    return ;
}


void main2211()
{
    //main21_fputs();
    main22_fgets();
    printf("hello...\n");
    system("pause");
    return ;

}
  • 按块对文件读写
    fopen(char ,r+):打开文件
    myN = fwrite( char
    &tArray[i],sizeof(Teacher) , 1, fp);
    myN = fread(&tArray[i], sizeof(Teacher), 1, fp);
    //myN表示写入成功的次数
    //参数1:写入buf的地址
    //参数2:写入buf的长度
    //参数3:按几次写入
    //参数4:写入的文件
    feof(FILE *fp):若fp被读取完,则该函数返回1
    fclose(FILE *fp):关闭文件
#define  _CRT_SECURE_NO_WARNINGS 
#include <stdlib.h>
#include <string.h>
#include <stdio.h>


//直接把内存数据 写入到 文件中
typedef struct Teacher
{
    char name[64];
    int age ;
}Teacher;

void main_fwrite()
{
    int i = 0;
    FILE *fp = NULL;
    char *fileName = "c:/3.data";
    Teacher tArray[3];
    int  myN = 0;

    for (i=0; i<3; i++)
    {
        sprintf(tArray[i].name, "%d%d%d", i+1, i+1, i+1);
        tArray[i].age = i + 31;
    }

    fp = fopen(fileName, "wb");
    if (fp == NULL)
    {
        printf("建立文件失败\n");
        return ;
    }
    for (i=0; i<3; i++)
    {
        //_Check_return_opt_ _CRTIMP size_t __cdecl 
        //  fwrite(_In_count_x_(_Size*_Count) const void * _Str, _In_ size_t _Size, _In_ size_t _Count, _Inout_ FILE * _File);
        //函数参数
        //_Str : 从内存块的开始
        //_Size  //内存打包技术
        //_Count 写多少次
        //_File : 写入到 文件指针 所指向的文件中

        //函数的返回值 
        myN = fwrite( &tArray[i],sizeof(Teacher) , 1, fp);

        //myN 判断 有没有写满  磁盘

    }

    if (fp != NULL)
    {
        fclose(fp);
    }

}

void main_fread()
{
    int i = 0;
    FILE *fp = NULL;
    char *fileName = "c:/3.data";
    Teacher tArray[3];
    int  myN = 0;



    fp = fopen(fileName, "r+b");
    if (fp == NULL)
    {
        printf("建立文件失败\n");
        return ;
    }
    for (i=0; i<3; i++)
    {
        //_Check_return_opt_ _CRTIMP size_t __cdecl 
        // fread(_Out_bytecap_x_(_ElementSize*_Count) void * _DstBuf, _In_ size_t _ElementSize, _In_ size_t _Count, _Inout_ FILE * _File);
        myN  = fread(&tArray[i], sizeof(Teacher), 1, fp);
        //函数的返回值 
        //myN = fwrite( &tArray[i],sizeof(Teacher) , 1, fp);

        //myN 判断 有没有写满  磁盘

    }

    for (i=0; i<3; i++)
    {
        //sprintf(tArray[i].name, "%d%d%d", i+1, i+1, i+1);
        //tArray[i].age = i + 31;
        printf("name:%s, age:%d \n", tArray[i].name, tArray[i].age);
    }

    if (fp != NULL)
    {
        fclose(fp);
    }

}

void main()
{
    //main_fwrite();
    main_fread();
    printf("hello...\n");
    system("pause");
    return ;
}

相关文章

  • c语言文件读写 | 按字符,按行,按块

    按字符对文件读写fopen(char *,r+):打开文件fputc(“c”,FILE *fp):把字符写到fp文...

  • c#读写txt文件

    按行顺序读写txt文件 按空格解析每行数据

  • Android 基础之文件和数据库

    Java 文件流 1. 字节流文件操作(读写)的代码 2. 字符流文件操作(读写)的代码 3. 按行(读写)的代码...

  • 四种Excel文件读写的问题场景模式

    1.学习分解不同的Excel文件读写问题,熟悉四种Excel文件读写的问题场景模式。①单元格读写、②按行读写、③按...

  • 文件操作

    打开方式 按行读取 大文件读写 ----按行 文件/目录的常用操作 os.path.isdir()判断是否位目录,...

  • Vim 大法

    命令执行格式 基础操作 按字符光标移动 按行光标移动 按照文本块移动 简单的文件编辑 添加文本 修改文本, 需告知...

  • Linux 常用小技巧

    批量结束进程 文件按行读取并把每行按多个空格分割成数组 按照文件名挑选文件 cut 命令 (按特定分隔符分割字符并...

  • C语言:按位运算

    C语言:按位运算 C有这些按位运算的运算符& 按位的与| 按位的或~ 按位取反^ 按位的异或<< ...

  • 一、 IDEA编辑器快捷键基础

    1.选择 在任何一个单词前输入补字符号。按下Ctrl+Shift+右箭头 按下Ctrl+W扩展代码块的选择 按下C...

  • OmronHostLink

    欧姆龙HostLink 协议 fins命令字符串有按字读写 和按位读写 对ASCII字符串异或 接收回来的数据需要...

网友评论

      本文标题:c语言文件读写 | 按字符,按行,按块

      本文链接:https://www.haomeiwen.com/subject/blbgdctx.html