当前位置:网站首页>C语言文件读、写、定位函数
C语言文件读、写、定位函数
2022-07-31 05:09:00 【xjhdsg】
文章目录
文件函数
文件的读
fgetc(读一个字符)
// 函数原型
int fgetc(
FILE *stream //指向文件结构的指针
);
- fgetc 返回作为 int 读取的字符,或返回 EOF 以指示错误或文件尾。
- 这个函数读取完会将文件指针移动到下一个字符。
while(EOF != (ch = fgetc(fp))){
//可读取文件全部字符
printf("%c",ch); //若输出出现乱码,可调整文件编码为ANSI
}
fgets(读一行字符串)
// 函数原型
char *fgets(
char *str, //数据的存储位置。
int numChars, //要读取的最大字符数。
FILE *stream //指向 FILE 结构的指针
);
函数被调用时,最多读取n-1个字符,并将读入的字符串存入指针str所指向内存地址开始的n-1个连续的内存单元中。
当函数读取到字符串达到指定的个数、或接收到换行符、或接收到文件结束标志EOF时,将读取的字符后面自动添加’\0’字符,若有换行符,则将换行符保留(换行符在’\0’字符之前)。若有EOF,则不保留EOF。
执行成功,函数会将读到的字符串自动返回 str。执行失败,则返回 NULL 指示错误或文件尾条件。
函数读取完会将文件指针移动到字符串的下一个字符。
char str[100];
while(fgets(str,100,fp) != NULL){
//可读取文件全部内容
printf("%s",str);
}
fread(读指定字节数的字符串)
//函数原型
size_t fread(
void *buffer, //数据的存储位置。
size_t size, //项目大小(以字节为单位),即每次读多少个字节。
size_t count, //要读取的项目的最大数量,即读多少次。
FILE *stream //指向 FILE 结构的指针。
);
fread 返回实际读取的完整项数,在达到 buffer * size 前如果发生错误或遇到文结件尾,该数字可能小于 buffer * size,若读完则返回0。
// 读取文件全部内容。
char str[100] = {
0};
while(fread(str,1,99,fp)){
printf("%s",str);
}
文件的写
以w、w+打开文件时,文件会清空。
fputc(写入一个字符)
//函数原型
int fputc(
int c, //要写入的字符。
FILE *stream //指向文件结构的指针。
);
函数会返回写入的字符。fputc,返回值 EOF 表示错误。
fputs(写入一个字符串)
//函数原型
int fputs(
const char *str, //输出字符串。
FILE *stream //指向 FILE 结构的指针。
);
如果成功,函数将返回一个非负值。发生错误时,fputs将返回EOF。
char*str = "abcdefghijklmnopqrstuvwxyz";
fputs(str,fp);
fwrite(指定字节数写入)
//函数原型
size_t fwrite(
const void *buffer, //指向要写入的数据的指针。
size_t size,
size_t count,
FILE *stream
);
fread 返回实际写入的完整项数,在达到 buffer * size 前如果发生错误或遇到文结件尾,该数字可能小于 buffer * size。
//写入数字
int num = 12345;
fwrite(&num,1,sizeof(num),fp);
//写入结构体
struct student{
int num;
char name[];
int grade;
};
struct student a = {
1,"xjh",100};
fwrite(&a,1,sizeof(a),fp);
文件的定位
rewind(fp)
将文件指针重置到文件的开头
ftell(fp)
返回当前位置
fseek
//函数原型
int fseek(
FILE *stream, //指向 FILE 结构的指针。
long offset, //从origin开始,往后的字节数。
int origin //初始位置。
);
如果成功,则 fseek 返回 0。 否则,返回一个非零值。
origin的值只能为
原始值 | 含义 |
---|---|
SEEK_CUR | 文件指针的当前位置。 |
SEEK_END | 文件结尾。 |
SEEK_SET | 文件开头。 |
fseek(fp,-10,SEEK_CUR); //将指针定位到当前位置向前10个字节的位置
fseek(fp,5,SEEK_SET); //将指针定位到文件开头向后5个字节的位置
fseek(fp,-10,SEEK_END); //将指针定位到文件末尾向前10个字节的位置
// 实现输出最后一行
#include<stdio.h>
#include<stdlib.h>
int main(){
FILE*fp = fopen("C:\\Users\\1\\OneDrive\\桌面\\z.txt","r+");
if(fp == NULL){
printf("打开文件失败.\n");
}
int Length = -1;
char Find;
fseek(fp,Length,SEEK_END);
while(fread(&Find,1,1,fp)){
if(Find == '\n'){
break;
}
Length--;
fseek(fp,Length,SEEK_END);
}
jiLu++;
fseek(fp,jiLu,SEEK_END);
char str[100] = {
0};
fgets(str,99,fp);
printf("%s",str);
fclose(fp);
system("pause");
return 0;
}
边栏推荐
- 如何将项目部署到服务器上(全套教程)
- Mysql application cannot find my.ini file after installation
- 剑指offer专项突击版 --- 第 4 天
- 目标检测学习笔记
- .NET-9. A mess of theoretical notes (concepts, ideas)
- CentOS7 - yum install mysql
- Unity resources management series: Unity framework how to resource management
- 【mysql 提高查询效率】Mysql 数据库查询好慢问题解决
- MySQL_关于JSON数据的查询
- MySQL(更新中)
猜你喜欢
限流的原理
Anaconda configure environment directives
面试Redis 高可靠性|主从模式、哨兵模式、Cluster集群模式
Redis Advanced - Cache Issues: Consistency, Penetration, Penetration, Avalanche, Pollution, etc.
MySQL (updating)
剑指offer基础版 ----第31天
数据库上机实验5 数据库安全性
Information System Project Manager Core Test Site (55) Configuration Manager (CMO) Work
为什么要用Flink,怎么入门使用Flink?
Unity mobile game performance optimization series: performance tuning for the CPU side
随机推荐
【JS面试题】面试官:“[1,2,3].map(parseInt)“ 输出结果是什么?答上来就算你通过面试
Interview Redis High Reliability | Master-Slave Mode, Sentinel Mode, Cluster Cluster Mode
Input length must be multiple of 8 when decrypting with padded cipher
C语言指针详解
数据库上机实验7 数据库设计
Three handshakes and four waves
12 reasons for MySQL slow query
Temporal线上部署
剑指offer基础版 --- 第24天
tf.keras.utils.get_file()
C语言实验四 循环结构程序设计(一)
剑指offer专项突击版 --- 第 4 天
Unity mobile game performance optimization series: performance tuning for the CPU side
Refinement of the four major collection frameworks: Summary of List core knowledge
SQL statement to range query time field
剑指offer基础版 ---- 第29天
numpy和pytorch中的元素拼接操作:stack,concatenat,cat
mysql stored procedure
目标检测学习笔记
What are the advantages and disadvantages of Unity shader forge and the built-in shader graph?