C文件I / O:使用文件存储
C编程语言中的文件输入/输出
文件是包含用户数据或表示用户文档的计算机存储中的基本元素。文件是图像,文本,音频,视频或其他二进制数据。在此博客文章中,我们将看到如何从磁盘读取,使用C文件I / O接口写入磁盘。相比现代编程语言如Python,或Java,c中的文件I / O仍然是原始的。此博客文章介绍了C语言中的两个文件I / O示例 - A的一部分初学者在c中课程。
文件I / O操作
如果您开始C用户,则可能会受益于使用小步骤中的C编译器。在Windows中,您可以使用Mingw GNU工具链,Borland C / C ++编译器或Microsoft Visual Studio,或Linux中的shell。首先在shell中键入,
$ gcc -version.
而且您应该看到以下输出,然后您已准备好进入C开发。betwayapp下载安装
c中的文件api
要在程序中包含文件输入输出操作,您可以添加标题文件定义,
#include
其中文件结构存在和函数,
- fopen - 打开文件,返回文件* struct指针
- fclose -根据fopen的file *结构体指针关闭文件
- fprintf - 打印到文件
- fscanf - 从文件读取
- Ftell -显示文件流中的位置
- fseek - 转到开始文件流或结束
有关更多详细信息,请阅读Linux上的手动页面进行断言功能。
$ man fopen.
应该会出现这样的页面,
FOPEN(3)Linux程序员手册Fopen(3)名称Fopen,Fdopen,Freopen - 流开放功能概要#includeFILE *fopen(const char *path, const char *mode);void fclose(文件*);
相关功能:流访问
您还可以通过使用在同一个头文件中定义的函数、fseek、ftell和rewind在文件流中移动。要了解详细信息,请输入:$ man fseek.
FSEEK(3)Linux Programmer手册FSEEK(3)名称Fgetpos, fseek, fsetpos, ftell, rewind -重新定位一个流概要#includeint fseek(文件*流,长偏移,int whentence);长ftell(文件*流);void倒带(文件*流);
从文件中读取
在这个例子中,我们读取UNIX上名为“/etc/passwd”的文件,这是一个历史文件,列出了用户的数量和他们加密的密码,以及组id。一旦我们用read属性“r”打开文件,我们将内容提取到一个字符缓冲区中,称为“line_data”变量。我们还做了一些处理来提取从行开始到':'字符的用户名内容,并将其打印到控制台。我们也统计用户数量。
将所有这些放在一起,我们可以看到清单' file_read.c '
#include#include / *从/ etc / passwd * / plane中提取用户名* /int main(){Const char* fname = "/etc/passwd";FILE* fp = fopen(fname,"r");assert(fp != NULL);char line_data [512] = {0,},* ptr = null;INT LINE_NO = 0;而(!feof(fp)){Fgets (line_data, 512, fp);/ *在':'* /ptr = line_data;而(* ptr!=':'){PTR ++;}* ptr ='';/ *输出用户名* /printf(“%d)%s \ n”,line_no,line_data);line_no ++;}printf(“#ument #umers =%d \ n”,line_no);fclose(FP);返回0;}
运行程序
您可以从源网站,c.org下载您的平台C包,并运行测试和程序,$ gcc file_read.c -o file_read && ./file_read,是解释代码,然后运行程序的命令
0)根1)守护进程2)垃圾箱...39)Guest-R7IR0240)Guest-R7IR02用户总数= 41
写入文件
使用fprintf() API,与C中的printf() API相同,但是使用一个额外的第一个参数作为FILE指针可以用于将数据写入磁盘。您还需要打开一个带有write属性“w”的文件。在这个例子中,我们将文件命名为“data.txt”。把所有这些放在一起,我们可以看到' file_write.c '程序
#include#include / *从/ etc / passwd * / plane中提取用户名* /int main(){Const char* fname = "/etc/passwd";FILE* fp = fopen(fname,"r");assert(fp != NULL);char line_data [512] = {0,},* ptr = null;INT LINE_NO = 0;file * fw = fopen(“data.txt”,“w”);而(!feof(fp)){Fgets (line_data, 512, fp);/ *在':'* /ptr = line_data;而(* ptr!=':'){PTR ++;}* ptr ='';/ *输出用户名* /fprintf(fw,“%d)%s \ n”,line_no,line_data);printf(“%d)%s \ n”,line_no,line_data);line_no ++;}printf(“#ument #umers =%d \ n”,line_no);fprintf(fw,“总#ments =%d \ n”,line_no);fclose(FW);fclose(FP);返回0;}
当您编译并运行程序时,如上一节中,您将在名为“data.txt”的磁盘上获取新文件。在您最喜欢的编辑器中打开并阅读它。你看到了什么?
总结
软件开发人员使用文件作为辅助存储器的辅助数据存储。当程序关闭时,通常RAM中的所有内容都将丢失。通常将用户偏好存储到磁盘是一个要求,或者一个长计算的中间结果从意外终止或重新加载再次运行时,将它们读回内存。您可以了解更多信息计算和存储的数据库。辅助存储应用程序包括数据库备份和应用程序功能。