美文网首页c/c++C语言基础
C语言基础---文件块的读写

C语言基础---文件块的读写

作者: ZebraWei | 来源:发表于2018-07-19 12:17 被阅读1次

版权声明:本文为小斑马伟原创文章,转载请注明出处!
一、文件块写文件
size_t fwrite(const void ptr,size_t size , size_t nmemb, FILE * stream);
功能: 以数据块的方式给文件写入内容
参数: ptr: 准备写入文件数据的地址 size: size_t 为unsigned int 类型,此参数指定写入文件内容的块数据大小 nmemb: 写入文件的块数,写入文件数据总大小为: size
nmemb .stream: 已经打开的文件指针
返回值:成功:实际成功写入文件数据的块数目,此值和nmemb相等 失败 0
文件打开模式
第二个参数的几种形式(打开文件的方式):

打开模式 含义
r或rb 以只读方式打开一个文本文件(不创建文件,若文件不存在则报错)
w或wb 以写方式打开文件(如果文件存在则清空文件,文件不存在则创建一个文件)
a或ab 以追加方式打开文件,在末尾添加内容,若文件不存在则创建文件
r+或rb+ 以可读、可写的方式打开文件(不创建新文件)
w+或wb+ 以可读、可写的方式打开文件(如果文件存在则清空文件,文件不存在则创建一个新文件
a+或ab+ 以添加方式打开文件,打开文件并在末尾更改文件,若文件不存在则创建文件

注意:

  • b是二进制模式的意思,b只是在Windows有效,在Linus用r和rb的结果一样的。
  • Unix和Linux下所有的文件文件行都是\n结果,而Windows所有的文本文件行都是\r\n结尾
  • 在Windows平台下,以“文本”方式打开文件,不加b:
  • 1 当读取文件的时候,系统会将所有的"\r\n"转换成"\n"
  • 2 当写入文件的时候,系统会将"\n"转换为"\r\n"写入
  • 3 以“二进制”方式打开文件,则读\n写都不会进行这样的转换
  • 在Unix/Linux平台下,“文本”与“二进制”模式没有区别,“\r\n"作为两个字符原样输入输出
    二、文件块读写整型数据到文件
int main() {
FILE* fp = fopen("D:/c.txt", "wb");
if (!fp)
    return -1;

int a = 55678;
fwrite(&a, sizeof(int), 1, fp);
fclose(fp);

return 1;
}

int main(void) {
FILE*  fp = fopen("D:/c.txt", "rb");
if (!fp)
    return -1;

int value;
fread(&value, sizeof(int), 1, fp);
printf("%d\n", value);

return 0;

三、文件块读写数组数据到文件

int main() {
FILE*  fp = fopen("D:/c.txt", "rb");
if (!fp)
    return -1;

int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 10 };
fwrite(arr, sizeof(int), 10, fp);

fclose(fp);

return 0;
}

//读出数组
int main() {
FILE*  fp = fopen("D:/c.txt", "rb");
if (!fp)
    return -1;

int arr[] = { 0 };
fread(arr, sizeof(int), 10, fp);

for (int i = 0; i < 10; i++) {
    printf("%d\n", arr[i]);
}

fclose(fp);

return 0;
}

四、文件块读写结构体到文件

struct student
{
   char name[21];
   int age;
   int score;
   char addr[51];
}stu;

//写入
int main(){
stu ss[3] = {
    { "阿道夫", 9, 10, "北京" };
    {"松岛枫", 3, 1000, "南京"};
    {"陈胜", 43, 1, "大同"};
}

FILE*  fp = fopen("D:/c.txt", "rb");
if (!fp)
    return -1;

for (int i = 0; i < 3; i++) {
    fwrite(&ss[i], sizeof(stu), 1, fp);
}

fclose(fp);

system("pause");
return 0;
}

//读出
int main(void) {
FILE* fp = fopen("D:/c.txt", "rb");
if (!fp)
    return -1;

stu* ss = (stu*)malloc(sizeof(stu)* 3);

int i = 0; 
while (!feof(fp)) {
    fread(&ss[i], sizeof(stu), 1, fp);
    i++;
}

for (int i = 0; i < 3; i++) {
    printf("姓名:%s\n", ss[i].name)
    printf("年龄:%d\n", ss[i].age);
    printf("成绩:%d\n", ss[i].score);
    printf("地址:%s\n", ss[i].addr);
}

free(ss);
fclose(fp);
return 0;
}

相关文章

  • C语言基础---文件块的读写

    版权声明:本文为小斑马伟原创文章,转载请注明出处!一、文件块写文件size_t fwrite(const void...

  • C语言读写文件

    C语言文件读写### 标准文件读写 非标准文件读写 标准文件读写 头文件 include 打开文件 函数原型:FI...

  • C语言基础---文件读写概念

    **版权声明:本文为小斑马伟原创文章,转载请注明出处!一、文件分类按文件的逻辑结构:1.记录文件:由具有一定结构的...

  • Python文件操作

    前言 文件的读写操作是一门编程开发语言的基础,Python内置了读写文件的函数,用法和C是兼容的。 我们先解释一下...

  • C语言_文件

    @(C语言) [toc] 读文件 写文件 读写二进制文件

  • C语言读写文件

    从键盘输入字符后,写入到磁盘文件datafile1.txt中 读出磁盘文件datafile.txt中的内容,将它们...

  • C语言读写文件

    fread函数和fwrite函数 1.函数功能 用来读写一个数据块。 2.一般调用形式 fread(buffer,...

  • C语言读写文件

    C读写文件 使用 fopen(文件名,访问模式) 函数来打开文件,一般有getc/putc , fgets/fpu...

  • 【NDK 7】 c/c++ 文件和流操作

    C 语言的文件读写操作 头文件 : stdio.h 函数原型:FILE * fopen(const char * ...

  • Python:文件的读写

    任何编程语言都会涉及到文件的读写操作,在python中文件的读写与c语言有异曲同工之妙。 在对文件的处理中,一般分...

网友评论

    本文标题:C语言基础---文件块的读写

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