C语言编程入门:将数据写到文件里保存—利用系统函数fprintf()
文件可以用来保存输入的信息。
昨天说了文件读写的四个步骤:
第1步:定义文件指针;
第2步:打开文件;
第3步:文件读写;
第4步:关闭文件(保存数据到文件)。
今天主要讲第3步,用几个例子来说明怎样进行文件的操作。
今天主要讲写文件,即将数据写到文件里保存。
我们这里只讲文本文件的读写,二进制文件不讲。
我们都知道输入函数scanf( )和输出函数printf( )。
输出函数printf( )的功能是将数据输出到标准输出设备,如电脑显示器就是标准输出设备。
同理,输入函数scanf( )的功能是将数据从标准输入设备读到电脑里,如键盘就是标准输入设备。
我们来看一个例子。
程序1:
上述程序很简单,从键盘输入三个整数分别赋值给变量a、b、c,然后输出a、b、c的值在显示器上。
运行结果:
输入10 20 30,则输出10 20 30。
那么如果我们要把这三个整数10、20和30输出到文件(而不是输出到显示器),怎么实现呢?
有一个函数和printf( )函数很像,叫fprintf( ),这个函数的功能是将数据写到文件里,即保存数据到文件。
fprintf( )的语法格式:
fprintf(文件指针,“输出信息”);
如果输入信息中有格式控制符如%d、%f、%c、%s的,那么语法格式如下:
fprintf(文件指针,“输出信息”,变量表);
比如我们要保存刚才输入的数据,程序如下:
程序2:
程序2中定义了一个文件指针fp,然后用open()打开文件,打开方式为”w”,w就是写的意思(write)。
用”w”的方式开发文件,如果该文件不存在,则创建这个文件。
如果这个文件已经存在,则文件内容会被清空,写入新的内容。
运行结果和程序1一样,但是在和这个程序在同一个文件夹里多了一个文件,文件名为AAA.txt。
打开这个文件,可以看到文件内容就是三个整数:10 20 30。
一开始这个文件并不存在,所以自动创建了一个新文件,文件内容就是fprintf()里写进去的内容。
如果我再执行以此程序2,输入的内容不是10 20 30,而是100 200 300,运行结果为:
我们再打开文件AAA.txt,则文件内容变成: 100 200 300。
可能有朋友说怎么一写文件,文件原有的内容就清空了?
因为你是用“w”的方式打开文件。
如果不想清空文件原有内容,而是将新的数据追加到原文件末尾,怎么处理呢?
打开方式改成:“aw”。
a是追加(append)的意思,w是写(write)的意思。
用“aw”方式打开文件,若该文件不存在,则新创建文件,写入数据;
若该文件存在,则文件原有内容不会清空,新内容追加在原有内容的后面。
即第一次运行程序输入10 20 30,写到文件,文件内容为10 20 30。
第二次运行程序输入100 200 300,写到文件,文件内容此时变成两行:
10 20 30
100 200 300
程序3:
此时如果输入三个整数1 2 3。
则打开文件AAA.txt,内容如下:
这是因为刚才文件AAA.txt的内容是100 200 300,而这次输入数据为1 2 3,那么这三个整数1 2 3就放到了100 200 300后面。
因为输出函数fprintf( )的输出信息中有\n换行,所以新的内容也是从新的一行写入的。
4 总结
今天介绍了文件输出函数fprintf( )。
fprintf( )的语法格式:
fprintf(文件指针,“输出信息”);
如果输入信息中有格式控制符如%d、%f、%c、%s的,那么语法格式如下:
fprintf(文件指针,“输出信息”,变量表);