中国联通网站备案管理系统个人网页介绍
中国联通网站备案管理系统,个人网页介绍,公司管理系统有哪些,凡科免费建站文章目录 文件指针概述文件指针打开模式文件常用操作函数fprintf#xff08;#xff09;函数fscanf#xff08;#xff09;函数fgets#xff08;#xff09;函数fputc#xff08;#xff09;函数fgetc#xff08;#xff09;函数feek#xff08;#xff09;函数fre… 文章目录 文件指针概述文件指针打开模式文件常用操作函数fprintf函数fscanf函数fgets函数fputc函数fgetc函数feek函数frewind()函数 ⽂件缓冲区 文件指针概述
1在C语言中文件指针是一个用于在程序中操作文件的特殊类型指针。文件指针用于跟踪文件中的位置以便在文件中执行读取和写入操作。
2常见的文件指针类型是FILE它是C标准库中定义的一种结构类型。通常我们使用 FILE* 类型的指针来引用一个文件。
文件指针的主要作用是
1定位文件位置文件指针跟踪文件中当前的读/写位置。在文件操作期间指针会根据读写操作的进行而自动移动到相应的位置。
2进行文件操作通过文件指针可以进行文件的读取、写入和定位等操作。
在文件操作中文件指针的一般流程是
1使用fopen()函数打开文件时该函数返回一个指向文件的指针。
2通过该指针执行读取和写入操作例如使用fscanf()、fprintf()等函数。
3最后使用fclose()函数关闭文件并释放文件指针所占用的资源。
举个例子
#include stdio.hint main() {FILE *filePointer; //定义指针命名char data[100];// 打开文件以供写入filePointer fopen(example.txt, w);if (filePointer NULL) {printf(无法打开文件\n);return 1;}// 写入数据到文件fprintf(filePointer, Hello, World!\n);fprintf(filePointer, This is a test message.\n);// 关闭文件fclose(filePointer);// 打开文件以供读取filePointer fopen(example.txt, r);if (filePointer NULL) {printf(无法打开文件\n);return 1;}// 从文件读取数据并打印到控制台while (fgets(data, 100, filePointer) ! NULL) {printf(%s, data);}// 关闭文件fclose(filePointer);return 0;
}文件指针打开模式
打开文件使用fopen()函数打开文件语法如下
FILE *fopen(const char *filename, const char *mode);filename参数是要打开的文件名
mode参数表示打开文件的模式; 常见的模式有 “r”只读模式文件必须存在 “w”写入模式如果文件存在则清空文件内容如果文件不存在则创建新文件 “a”追加模式写入内容追加到文件末尾如果文件不存在则创建新文件 “r”读写模式文件必须存在 “w”读写模式如果文件存在则清空文件内容如果文件不存在则创建新文件 “a”读写模式写入内容追加到文件末尾如果文件不存在则创建新文件。 读写文件使用fprintf()和fscanf()函数进行文件的读写操作。例如使用fprintf()向文件写入数据
fprintf(FILE *stream, const char *format, ...);
//使用fscanf()从文件读取数据fscanf(FILE *stream, const char *format, ...);
//关闭文件使用fclose()函数关闭文件释放资源。int fclose(FILE *stream);
//关闭文件是一个良好的编程习惯可以避免资源泄漏问题。文件常用操作函数
fprintf函数
1fprintf()函数是C语言中的一个标准输入输出函数用于将格式化数据写入到文件中。它的原型如下
int fprintf(FILE *stream, const char *format, ...);参数说明 stream指向文件流的指针指定要写入的目标文件。 format格式化字符串类似于printf()中的格式化字符串指定了要写入的内容的格式。 …可变数量的参数根据format中的格式化要求提供相应数量的参数。
类比 fprintf()函数的工作方式与printf()类似但fprintf()将输出结果写入到指定的文件流中而不是标准输出设备如屏幕。它可以用来向文件中写入各种类型的数据包括字符串、整数、浮点数等。
使用fprintf()函数时需要注意以下几点
1必须先打开文件并创建文件流才能使用fprintf()来写入数据。
2需要在结束操作后关闭文件流以确保数据被正确写入文件。
3格式化字符串中的格式化规范要与提供的参数类型相匹配否则可能导致不可预料的结果。 示例代码
#include stdio.hint main() {FILE *file fopen(output.txt, w); // 打开一个文件用于写入if (file NULL) {printf(无法打开文件\n);return 1;}int num 42;float pi 3.14159;char str[] Hello, World!;// 将数据写入文件fprintf(file, 整数%d\n, num);fprintf(file, 浮点数%f\n, pi);fprintf(file, 字符串%s\n, str);fclose(file); // 关闭文件return 0;
}fscanf函数
2fscanf()函数是C语言中的一个标准输入函数用于从文件中读取格式化数据。它的原型如下
int fscanf(FILE *stream, const char *format, ...);参数说明
stream指向文件流的指针指定要读取数据的源文件。format格式化字符串类似于scanf()中的格式化字符串指定了要读取的内容的格式。…可变数量的参数根据format中的格式化要求提供相应数量的指针变量用于存储读取到的数据。
类比 fscanf()函数的工作方式与scanf()类似但fscanf()从指定的文件流中读取输入数据而不是从标准输入设备如键盘。它可以用来从文件中读取各种类型的数据包括整数、浮点数、字符串等。
使用fscanf()函数时需要注意以下几点
1必须先打开文件并创建文件流才能使用fscanf()来读取数据。
2需要在结束操作后关闭文件流以确保数据被正确读取。
3格式化字符串中的格式化规范要与读取的数据类型相匹配否则可能导致读取错误或未定义行为。
示例代码
#include stdio.hint main() {FILE *file fopen(input.txt, r); // 打开一个文件用于读取if (file NULL) {printf(无法打开文件\n);return 1;}int num;float pi;char str[50];// 从文件中读取数据fscanf(file, %d, num);fscanf(file, %f, pi);fscanf(file, %s, str);printf(整数%d\n, num);printf(浮点数%f\n, pi);printf(字符串%s\n, str);fclose(file); // 关闭文件return 0;
}fgets函数
3fgets()函数是C语言中的一个标准库函数用于从文件流中读取一行数据。它的原型如下
char *fgets(char *str, int n, FILE *stream);参数说明
str指向字符数组的指针用于存储读取到的字符串数据。n要读取的最大字符数包括字符串结尾的空字符。stream指向文件流的指针指定要读取数据的源文件。
结束标志
fgets()函数用于从指定的文件流中读取数据直到遇到换行符\n、文件结束符或者读取了n-1个字符为止。它会将读取到的数据存储在指定的字符数组中并在读取完整行后添加一个空字符来表示字符串的结束。
使用fgets()函数时需要注意以下几点
1读取的数据会包含换行符\n除非达到文件末尾。
2如果成功读取到数据则fgets()函数会返回第一个参数str的值如果到达文件末尾或者发生错误则返回NULL。
3如果读取的行数据长度超过n-1个字符fgets()函数会截断多余的部分并在末尾加上空字符。
4读取到的数据可能不包含换行符因为fgets()会读取换行符并将其替换为字符串结束符。
示例代码
#include stdio.hint main() {FILE *file fopen(input.txt, r); // 打开一个文件用于读取if (file NULL) {printf(无法打开文件\n);return 1;}char buffer[100];// 从文件中读取一行数据while (fgets(buffer, sizeof(buffer), file) ! NULL) {printf(%s, buffer); // 输出读取到的行数据}fclose(file); // 关闭文件return 0;
}fputc函数
4fputc()函数是C语言中的标准库函数用于将一个字符写入到指定的文件流中。它的原型如下
int fputc(int character, FILE *stream);参数说明
character要写入的字符通常是一个ASCII码值。stream指向文件流的指针指定要写入数据的目标文件。fputc()函数会将指定的字符写入到指定的文件流中并返回写入的字符以无符号字符形式。如果写入成功则返回写入的字符如果发生错误则返回EOF。
使用fputc()函数时需要注意以下几点
1fputc()函数向文件写入一个字符如果文件不存在将会新建如果文件已存在则会覆盖原有内容。
2如果想连续写入多个字符可以通过多次调用fputc()函数来实现。 3写入字符时会按照ASCII码值写入到文件中。
4在写入成功后文件流的位置会自动向前移动一个字符位置。 示例代码
#include stdio.hint main() {FILE *file fopen(output.txt, w); // 打开一个文件用于写入if (file NULL) {printf(无法打开文件\n);return 1;}char ch A;// 将字符写入文件if (fputc(ch, file) ! EOF) {printf(字符%c写入成功\n, ch);} else {printf(写入失败\n);}fclose(file); // 关闭文件return 0;
}fgetc函数
5fgetc()函数是C语言中的标准库函数用于从文件流中读取一个字符。它的原型如下
int fgetc(FILE *stream);参数说明 stream指向文件流的指针指定要从中读取数据的源文件。 fgetc()函数会从指定的文件流中读取一个字符并返回读取到的字符以无符号字符形式。如果读取成功则返回读取到的字符如果已到达文件末尾或者发生错误则返回EOF。
使用fgetc()函数时需要注意以下几点
1fgetc()函数每次只能读取一个字符如果想连续读取多个字符可以通过多次调用fgetc()函数来实现。 2每次调用fgetc()函数文件流的位置会自动向后移动一个字符位置。 3如果文件流已经到达文件末尾EOF则fgetc()函数返回EOF。 4读取的字符是无符号字符即在0-255的范围内EOF的值通常为-1。 示例代码
#include stdio.hint main() {FILE *file fopen(input.txt, r); // 打开一个文件用于读取if (file NULL) {printf(无法打开文件\n);return 1;}int ch;// 从文件中逐个读取字符while ((ch fgetc(file)) ! EOF) {printf(%c, ch); // 输出读取到的字符}fclose(file); // 关闭文件return 0;
}feek函数
6fseek()函数是C语言中用于设置文件位置指针的函数它允许我们在文件中移动文件位置指针的位置。fseek()函数的原型如下
int fseek(FILE *stream, long int offset, int origin);参数说明 stream指向文件流的指针指定要进行定位的文件。 offset偏移量指定了从起始点由origin参数确定开始的偏移量。 origin指定起始点可以是SEEK_SET、SEEK_CUR或 SEEK_END分别表示从文件开头、当前位置或文件末尾开始计算偏移量。 fseek()函数用于将文件流的位置指针设置到指定的位置。通过调用该函数可以在文件中进行随机访问而不仅仅是按顺序读取或写入数据。
示例代码
#include stdio.hint main() {FILE *file fopen(data.txt, r); // 打开文件用于读取if (file NULL) {printf(无法打开文件\n);return 1;}// 将文件位置指针移动到文件末尾fseek(file, 0, SEEK_END);// 获取当前文件位置指针的位置即文件末尾的偏移量long fileSize ftell(file);printf(文件大小%ld 字节\n, fileSize);fclose(file); // 关闭文件return 0;
}frewind()函数
7frewind()函数是C语言中用于将文件位置指针重新定位到文件的起始位置的函数。它的原型如下
void rewind(FILE *stream);参数说明 stream指向文件流的指针指定要重新定位的文件。 frewind()函数会将文件位置指针重新设置到文件的起始位置即相当于调用fseek(stream, 0L, SEEK_SET)来实现。
示例代码
#include stdio.hint main() {FILE *file fopen(data.txt, r); // 打开文件用于读取if (file NULL) {printf(无法打开文件\n);return 1;}// 将文件位置指针重新设置到文件起始位置rewind(file);// 从文件中读取数据并进行处理...fclose(file); // 关闭文件return 0;
}⽂件缓冲区
1ANSIC标准采⽤“缓冲⽂件系统”处理的数据⽂件的所谓缓冲⽂件系统是指系统⾃动地在内存中为程序中每⼀个正在使⽤的⽂件开辟⼀块“⽂件缓冲区”。
2从内存向磁盘输出数据会先送到内存中的缓冲区装满缓冲区后才⼀起送到磁盘上。
3如果从磁盘向计算机读⼊数据则从磁盘⽂件中读取数据输⼊到内存缓冲区充满缓冲区然后再从缓冲区逐个地将数据送到程序数据区程序变量等。缓冲区的⼤⼩根据C编译系统决定的。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/86417.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!