栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言文件操作

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言文件操作

文章目录
    • 文件的打开
    • 文件的关闭
    • 文件的读写
      • 字符方式的文件读写
      • 字符串方式的文件读写
      • 格式化文件的读写
      • 数据块读写函数
    • 文件定位函数
      • fseek()函数
      • ftell()函数
      • rewind()函数
      • feof()函数

以下是对C语言文件相关操作的粗略学习,具体的相关源码开源在Github上

文件的打开
FILE *fp;
fp = fopen("文件名","文件打开方式");

功能:fopen()打开一个指向文件名的文件,文件操作方式由打开方式的值决定
返回值:正常打开为返回一个指向该文件信息结构体的指针,若错误,则返回错误表示NULL
文件打开方式参数
说明:

  1. “文件名”指出对哪个具体文件进行操作,一般需要指定文件路径,否则默认为与程序的当前路径相同
  2. 以“r”方式打开的文件应该已经存在,以“w”方式打开的文件,如果不存在,则新建一个,否则在打开时将该文件删去,然后重新建立一个新文件
  3. 若不希望删除原有数据,则应该用“a”方式打开
  4. 用“*+”方式打开的文件可以用来输入输出数据
  5. 不允许同一文件在关闭前被再次打开
文件的关闭
fclose(文件指针);

功能:关闭文件指针对应的文件,并返回一个整数值
返回值:若成功关闭,则返回0,否则返回一个非零值

文件的读写 字符方式的文件读写
int fgetc(FILE *fp);

功能:从fp指向的文件中读取一个字节代码
返回值:正常则返回督导的代码值,读到文件尾或出错则返回EOF

int fputc(int c, FILE *fp);

功能:把一字节代码c写入fp指向的文件中
返回值:正常则返回c,出错返回EOF

字符串方式的文件读写
#include 
#include 
#include 
#include 
int main(int argc, char const *argv[])
{
	char string[20];
	FILE *fp;
	if((fp = fopen("f1.txt","w+")) == NULL) {
		printf("File open error!n");
		exit(0);
	}
	printf("input a string: n");
	// gets()函数读入回车符时停止,且回车符不作为字符串读入,因此只输入回车时,字符串长度为0,循环结束
	while(strlen(gets(string))>0) {
		fputs(string,fp);
		  
		fputs("n",fp);
		}
		// 把指针fp所致的文件的内部位置指针移动到文件头
		rewind(fp);
		while(fgets(string,20,fp) != NULL) {
		puts(string);
	}
	if(fclose(fp)) {
		printf("Can not close the file!n");
		exit(0);
	}
	return 0;
}

注:fgets()函数读到回车符时,也将其作为一个字符读入到字符串中,gets()函数则不会;fputs()函数不会在写入文件的字符串末尾加上回车符,而puts()函数会输出回车符。

格式化文件的读写
int fprintf(FILE *fp, 格式控制串, 输出列表);
int fscanf(FILE *fp, 格式控制串, 输入列表);

功能:fprintf()函数按格式控制串中的控制符把响应数据写入fp指向的文件中;fscanf()函数从fp指向的文件中按格式控制串中的控制符,读取相应的数据,并赋给输入列表中对应的变量地址中。
返回值:成功返回读写个数,出错或位于文件尾,返回EOF

数据块读写函数

按数据块读写文件,能方便地对程序中的数组、结构体数据进行整体输入输出

int fread(void *ptr, int size, int count, FILE *fp);
int fwrite(void *ptr, int size, int count, FILE *fp);

功能:fread()函数在fp指定的文件中读取count次数据项(每次size字节),存放到以ptr所指的内存单元地址中。fwrite()函数为从ptr为首地址的内存中取出count次数据项(每次size字节),写入fp所指的磁盘文件中。
返回值:成功返回读写的块数;出错或处于文件尾,返回0

注意:用fread()和fwrite()读写时,必须向二进制文件读写数据项

文件定位函数 fseek()函数
int fseek(FILE *fp, long offset, int from);

功能:控制文件的位置指针移动。from表示起始位置,文件首部:0/SEEK_SET,当前位置:1/SEEK_CUR,文件尾部:2/SEEK_END。offest表示以起始点为基点,向前移动的字节数。
返回值:定位成功为0,不成功则为非0的整数值
举例:

// 将位置指针移动到离文件头100字节处
fseek(fp, 100L, 0);

// 将位置指针移动到离当前位置50字节处
fseek(fp, 50L, 1);

// 将位置指针从文件末尾处向后退10字节
fseek(fp, 50L, 2);

// 将位置指针移动到离文件尾部前20字节处
fseek(fp, -20L, SEEK_END);
ftell()函数
long ftell(FILE *fp);

功能:获取当前文件指针的位置,即相对于文件开头的位移量(字节数)
返回值:成功时,返回值>=0,即文件指针的当前指向,出错时返回-1L

rewind()函数
void rewind(FILE *fp);

功能:定位文件指针,使文件指针指向读写文件的首地址,即打开文件时文件指针所指向的位置

feof()函数
int feof(FILE *fp);

功能:判断fp指针是否已经到文件末尾
返回值:返回值为1时,表示到文件结束位置;返回值为0时,表示文件未结束

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1038598.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号