利用文件保存数据(c语言)

将数据储存到本地文件

环境:CentOS7
后附常用文件操作函数和功能表
文件后缀
.doc(Word文件)、.txt(文本文件)、.dat(数据文件)、.c(C语言源程序文件)、.cpp(C++源程序文件)、.for(FORTRAN语言源程序文件)、.pas(Pascal语言源程序文件)、.obj(目标文件)、.exe(可执行文件)、.ppt(电子幻灯文件)、.bmp(图形文件)、.jpg(图像文件)。

文件类型

  • 程序文件(可执行)
  • 数据文件(ASCII文件和二进制文件)
    ①ASCII文件:文本文件,每一个字节存放一个字符ASCII代码(字符型、数值型)。
    ②二进制文件:把内存中的数据按原来的样子输出到磁盘上存储(数值型)。
    例子:输入10000
    ASCII形式输出到磁盘(5字节)
    二进制形式输出到磁盘(2字节)

文件指针
每个使用过的文件都在内存中开辟出一个相应的文件信息区存放文件相关信息。这些信息存在一个结构体变量(FILE)中。
例:FILE * fp

打开和关闭文件

  • 打开数据文件(fopen)
    fopen (文件名,使用文件方式);
    例:
    FILE * fp; #定义一个文件指向变量fp
    fp = fopen (“a”, “r”); #将fopen函数的返回值赋给fp
  • 关闭文件(fclose)
    fclose (文件指针)
    例:fclose (fp);

PS:

使用意思
r只读(ASCII文件)
w只写(ASCII文件)
a追加(向ASCII文件尾添加数据)
rb只读(二进制文件)
wb只写(二进制文件)
ab追加(向二进制文件尾添加数据)
r+读写(打开一个ASCII文件读写)
w+读写(建立一个新的ASCII文件)
a+读写(ASCII文件)
rb+读写(二进制文件)
wb+读写(二进制文件)
ab+读写(二进制文件)

示例1:输入内容再送到磁盘

#include <stdio.h>
#include <stdlib.h>
int main() {
    FILE * fp;
    char ch, filename[10];
    printf ("请输入文件名:");
    scanf ("%s", filename);
    if ((fp = fopen (filename, "w")) == NULL) {
        printf ("无法打开\n");
        exit (0);
        }
     ch = getchar();
     printf ("请输入内容,以#号结束:");
     ch = getchar();
     while (ch != '#') {
        fputc (ch, fp);
        putchar (ch);
        ch = getchar ();
        }
      fclose (fp);
      putchar (10);
      return 0;
      }
      
[root@chenshuyi c]# gcc -o fputc fputc.c
[root@chenshuyi c]# ./fputc
请输入文件名:one
请输入内容,以#号结束:happy every days!#
happy every days!
[root@chenshuyi c]# cat one
happy every days!

在这里插入图片描述

### C语言文件操作保存数据 在C语言中,可以通过文件流来实现将数据保存文件的功能。文件流允许程序打开文件并执行读写操作,从而有效处理大量数据、持久化存储以及与文件系统的交互[^1]。 下面展示了一个完整的例子,该示例展示了如何创建一个名为`example.txt`的文本文件并向其中写入整数数值: ```c #include <stdio.h> int main(void) { // 打开或创建文件 example.txt 并准备向其内部写入内容 FILE *file = fopen("example.txt", "w"); if (file == NULL) { printf("无法打开文件\n"); return 1; } int number_to_write = 42; // 使用 fprintf 函数按照指定格式将变量number_to_write的内容写入文件 fprintf(file, "%d", number_to_write); printf("已成功将数字 %d 写入文件。\n", number_to_write); // 关闭文件指针以确保所有缓冲区都被刷新并且资源被释放 fclose(file); return 0; } ``` 此代码片段首先包含了标准输入输出库头文件,定义了主函数,在尝试打开目标文件之前声明了一个指向FILE结构体类型的指针。如果fopen返回NULL,则表示未能成功建立连接;反之则继续向下执行。接着利用fprintf把想要存盘的数据按特定格式串行化后送至磁盘上的对应位置。最后记得调用fclose关闭先前分配给当前进程使用的I/O通道[^2]。 为了进一步说明如何使用`fprintf()`函数,这里提供更详细的解释:这是一个用来格式化输出到指定文件流的标准库函数,原型如下所示。它接受至少两个参数,第一个是要写入的目标文件流对象地址,第二个是指定要打印字符串模式的字符数组(即格式控制符),后续可选跟随零个或多个额外实参作为实际待替换占位符的具体值[^3]。 ```c int fprintf(FILE *stream, const char *format, ...); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值