前言

很久没更新(主要是懒),最近活动也挺多的,比较辛苦。就简单回忆一下上星期讲的内容:文件输入输出基础,输入验证和复习了函数。但这次还真没什么好讲的,那就只讲文件输入输出吧。


文件输入输出

如果不想看废话的话可以直接跳到实例部分

C 语言把所有的设备都当作文件。所以设备(比如显示器)被处理的方式与文件相同。以下三个文件会在程序执行时自动打开,以便访问键盘和屏幕。

标准文件 文件指针 设备
标准输入 stdin 键盘
标准输出 stdout 屏幕
标准错误 stderr 您的屏幕

文件指针是访问文件的方式,本节将讲解如何从屏幕读取值以及如何把结果输出到屏幕上。

C 语言中的 I/O (输入/输出) 通常使用 printf() 和 scanf() 两个函数。

scanf() 函数用于从标准输入(键盘)读取并格式化, printf() 函数发送格式化输出到标准输出(屏幕)。

我们使用文件进行输入输出当然就要分为打开文件、关闭文件、读取文件、写入文件等。


打开文件

可以使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE 的一个对象,类型 FILE 包含了所有用来控制流的必要的信息。下面是这个函数调用的原型:

FILE *fopen( const char * filename, const char * mode );

在这里,filename 是字符串,用来命名文件,访问模式 mode 的值一般来说用得多的就这两个:

模式 描述
r 打开一个已有的文本文件,允许读取文件。
w 打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。

关闭文件

打开了文件就要关闭文件,为了关闭文件,我们使用 fclose( ) 函数。

如果成功关闭文件,fclose( ) 函数返回零,如果关闭文件时发生错误,函数返回 EOF。这个函数实际上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。EOF 是一个定义在头文件 stdio.h 中的常量。

C 标准库提供了各种函数来按字符或者以固定长度字符串的形式读写文件。


写入文件

当我们文件已经成功打开后,我们就可以使用scanf\printf来输入输出到文件中了。


读取文件

fgetc() 函数从 fp 所指向的输入文件中读取一个字符。返回值是读取的字符,如果发生错误则返回 EOF

函数从 fp 所指向的输入流中读取 n - 1 个字符。它会把读取的字符串复制到缓冲区 buf,并在最后追加一个 null 字符来终止字符串。

其中: fgets() 的原型:

char *fgets( char *buf, int n, FILE *fp );

 


实例

以上内容纯属没什么用,还不如直接看实例:

实例一:

#include<stdio.h>
int main()
{
    FILE *fp = NULL;

    fp = fopen("D:\\tmp\\test.txt", "w+"); //对这行代码进行了更改
    fprintf(fp, "This is testing for fprintf...\n");
    fputs("This is testing for fputs...\n", fp);
    fclose(fp);
}
实例二:(比较常用)
#include<stdio.h>
FILE *fin,*fout;

int main()
{
fin=fopen("01.in","r");
fout=fopen("01.out","w");



fclose(fin);
fclose(fout);
return 0;
}

实例三(freopen)比较简便:

#include<stdio.h>

int main()
{
freopen("01.in","r",stdin);
freopen("01.out","w",stdout);

return 0;
}
这里的一切都有始有终,却能容纳所有的不期而遇和久别重逢。
最后更新于 2024-01-14