C编程语言中的文件输入/输出

C文件IO.文件是包含用户数据或表示用户文档的计算机存储中的基本元素。文件是图像,文本,音频,视频或其他二进制数据。在此博客文章中,我们将看到如何从磁盘读取,使用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 

其中文件结构存在和函数,

  1. fopen - 打开文件,返回文件* struct指针
  2. fclose -根据fopen的file *结构体指针关闭文件
  3. fprintf - 打印到文件
  4. fscanf - 从文件读取
  5. Ftell -显示文件流中的位置
  6. fseek - 转到开始文件流或结束

有关更多详细信息,请阅读Linux上的手动页面进行断言功能。

$ man fopen.

应该会出现这样的页面,

FOPEN(3)Linux程序员手册Fopen(3)名称Fopen,Fdopen,Freopen  - 流开放功能概要#include FILE *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 -重新定位一个流概要#include int 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中的所有内容都将丢失。通常将用户偏好存储到磁盘是一个要求,或者一个长计算的中间结果从意外终止或重新加载再次运行时,将它们读回内存。您可以了解更多信息计算和存储的数据库。辅助存储应用程序包括数据库备份和应用程序功能。

C#中的顶级课程

面向初学者的c#。net
里克菲利普斯
4.4 (1,263)
完成C#Unity Game Developer 3D
Ben Tristem,Rick Davidson,Gamev.TV团队
4.7 (26,828)
畅销书
c#中级:类,接口和面向对象
狂舞Hamedani
4.6 (23,135)
畅销书
RPG核心作战创造者:学习中级Unity C#编码
Ben Tristem,Rick Davidson,Sam Pattuzzi,Gamev.TV团队
4.7 (8,490)
c#高级主题:为技术面试做准备
狂舞Hamedani
4.5 (15,119)
完成C#MasterClass
丹尼斯•Panjuta教程。Denis Panjuta的eu
4.5 (12,024)
C#和.NET中的设计模式
Dmitri Nesteruk.
4.4 (7,102)
畅销书
C#开发人员:使用Visual Studio双倍编码速度
狂舞Hamedani
4.5 (2,647)
畅销书
使用C#和.NET学习并行编程
Dmitri Nesteruk.
4.5 (2,035)
畅销书
Unity c#脚本:完成Unity游戏开发的c#betwayapp下载安装
Raja Biswas,Charger Games
4.5 (1,388)
畅销书

更多C#课程

C#学生也会学习

赋予你的团队。引领行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求一个演示