城乡规划师证报考条件,北京大型网站优化,企业账号登录入口,wordpress 相册插件所有案列 跳转到其他。 文件打开
FILE* fopen(const char *filename, const char *mode);
参数#xff1a;filename#xff1a;指定要打开的文件名#xff0c;需要加上路径#xff08;相对、绝对路径#xff09;mode#xff1a;指定文件的打开模式
返回值#xff1a;成… 所有案列 跳转到其他。 文件打开
FILE* fopen(const char *filename, const char *mode);
参数filename指定要打开的文件名需要加上路径相对、绝对路径mode指定文件的打开模式
返回值成功返回指向打开文件的文件指针失败返回 NULL关闭文件 一个进程同时打开的文件数是有限制的超过最大同时打开文件数再次调用fopen打开文件会失败。 所以使用完毕后还需要将文件关闭。 int fclose(FILE * stream);
参数stream接受一个文件指针用于指定要关闭的文件。它会将缓冲区中的数据写回到文件中并释放与文件相关的资源。
返回值返回一个整数值来指示关闭操作的成功与否。成功关闭文件它会返回0失败返回非零值按 字符 读写文件
按 字符 写文件
//fputc是一个C标准库函数用于将一个字符写入到文件中。
int fputc(int character, FILE *stream);
int putc(int character, FILE *stream);参数character要写入的字符注意这个参数是整形stream文件指针对应要写入字符的文件
返回值成功返回写入的字符失败返回 EOF在标准C库中putc函数实际上是一个宏而不是一个真正的函数。可以将其视为fputc函数的别名。因此它们的功能是相同的。 fputc函数通常用于以字符形式写入文件特别适用于处理文本文件。 按 字符 读文件
//fgetc是一个C标准库函数用于从文件中读取一个字符。
int fgetc(FILE *stream);
int getc(FILE *stream);fgetc函数接受一个文件指针 stream用于指定要从中读取字符的文件。
它会从文件中读取一个字符并返回读取的字符或者在到达文件结尾或发生错误时返回EOF。在标准C库中getc 函数实际上是一个宏而不是一个真正的函数。可以将其视为fgetc函数的别名。因此它们的功能是相同的。 fgetc函数通常用于以字符形式读取文件特别适用于处理文本文件。 按 行 读写文件
按 行 写文件
//fputs是一个C标准库函数用于将字符串写入文件。
int fputs(const char *string, FILE *stream);参数string字符串的指针表示要写入的内容stream文件指针用于指定要写入字符的文件
返回值成功返回一个非负值失败返回EOF按 行 读文件
//fgets是一个C标准库函数用于从文件中读取一行字符。
char *fgets(char *string, int size, FILE *stream);参数string字符指针用于存储读取的字符size指定要读取的最大字符数包括终止符stream文件指针用于指定要从中读取字符的文件
返回值成功返回参数string的首地址失败返回NULL按 块 读写文件
按 块 写文件
//fwrite是一个C标准库函数用于以二进制形式将数据写入文件。
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);参数ptr指向要写入数据的指针size要写入的每个元素的字节数count要写入的元素数量stream文件指针用于指定要写入数据的文件
返回值成功返回写入的元素数量即count的值失败或者返回一个小于count的值fwrite函数会将指针 ptr 指向的数据写入到文件中。写入的总字节数是size与count相乘的积。 按 块 读文件
//fread是一个C标准库函数用于从文件中以二进制形式读取数据。
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);参数ptr指向用于存储读取数据的缓冲区的指针size每个元素的字节数count要读取的元素数量stream文件指针用于指定要从中读取数据的文件
返回值成功返回实际读取的元素数量失败返回的元素数量与count不相等fread函数会从文件中读取指定数量的元素每个元素占据size个字节将它们存储在ptr指向的缓冲区中。 判断 文件末尾
EOF
#define EOF (-1)在C语言中EOF表示文件结束符(end of file)。 在while循环中以EOF作为文件结束标志这种以EOF作为文件结束标志的文件必须是文本文件。 在文本文件中数据都是以字符的ASCII代码值的形式存放。ASCII代码值的范围是0~127不可能出现-1因此可以用EOF作为文件结束标志。 当把数据以二进制形式存放到文件中时就会有-1值的出现因此不能采用EOF作为二进制文件的结束标志。 为解决这一个问题ANSI C提供一个feof函数用于检查文件流的文件结束标志。 feof() 用于检查文件流的文件结束标志。feof 函数既可用以判断二进制文件又可用以判断文本文件。 int feof(FILE *stream);参数streamfeof函数接受一个文件指针用于指定要检查的文件流。它会检查文件流的文件结束标志
返回值返回一个非零值真表示已经到文件结尾返回0假表示没有到文件结尾文件指针偏移
fseek
//fseek是一个C标准库函数用于在文件中定位文件指针的位置。
int fseek(FILE *stream, long offset, int whence);参数stream文件指针用于指定要定位的文件offset指定文件指针的偏移量whence指定文件指针的起始位置它对应的值有三个SEEK_SET表示从文件开始处偏移偏移量为offset个字节SEEK_CUR表示从当前位置偏移偏移量为offset个字节SEEK_END表示从文件末尾处偏移偏移量为offset个字节
返回值成功返回 0失败返回非零值注意fseek函数在二进制文件和文本文件中的行为可能有所不同。 1在文本文件中由于使用的编码不同字符和行的长度可以可变因此将文件指针定位在某个位置可能无法准确找到这个位置。 2在二进制文件中fseek函数可以在任意位置准确定位。 rewind
//rewind是一个C标准库函数它用于将文件指针重新定位到文件的起始位置。
void rewind(FILE *stream);
参数
stream是一个文件指针用于指定要重新定位的文件。ftell
//ftell是一个C标准库函数用于获取文件指针的当前位置偏移量。
long ftell(FILE *stream);参数stream文件指针用于指定要获取当前位置的文件。
返回值成功表示文件指针相对于文件起始位置的偏移量。失败返回值为负数需要注意的是ftell函数返回的偏移量是以字节为单位的相对值。初始位置为0向文件末尾方向的偏移量为正向文件开始方向的偏移量为负。 此外在Linux系统中还可以使用 ftello 函数来处理大文件超过2GB的偏移量。这些函数返回的偏移量类型为 off_t可以处理更大的文件。 将文件指针移动到文件的头部
fseek(fp, 0, SEEK_END); // 文件指针移动到文件尾部
fseek(fp, 0, SEEK_SET); // 文件指针移动到文件头部
rewind(fp); // 文件指针移动到文件头部文件缓冲区
fflush
//fflush是一个C标准库函数用于将输出缓冲区的内容立即写入文件。
int fflush(FILE *stream);参数stream 文件指针
返回值成功返回0失败返回非零值fflush函数接受一个文件指针 stream 作为参数用于指定要刷新缓冲区的文件。它会将输出缓冲区中的内容强制写入文件并清空缓冲区。 fflush函数接受一个文件指针 stream 作为参数用于指定要刷新缓冲区的文件。它会将输出缓冲区中的内容强制写入文件并清空缓冲区。 使用fflush函数可以确保数据被及时写入文件而不是在程序结束时或者缓冲区达到一定大小时才写入。这在某些情况下很有用例如当需要及时查看或共享文件内容时。 fprintf()
//fprintf是一个C标准库函数用于将格式化的数据写入文件中。
int fprintf(FILE *stream, const char *format, ...);fprintf函数接受一个文件指针 stream、一个格式化字符串 format 和一系列的可变参数用于按照指定的格式将数据写入到指定的文件中。 fprintf函数与 printf 函数的用法类似不同之处在于它将结果输出到指定的文件而不是标准输出流stdout。 删除 / 重命名文件
删除文件
//remove是一个C标准库函数用于删除文件。
int remove(const char *filename);参数
filename用于指定要删除的文件的路径和名称。
返回值
成功返回0
失败返回非零值使用remove函数删除文件时需谨慎因为该操作是不可撤销的。 需要确保拥有足够的权限来删除文件否则删除操作可能会失败。 重命名文件
//rename是一个C标准库函数用于重命名文件或将文件移动到另一个位置。
int rename(const char *old_filename, const char *new_filename);参数old_filename原始文件名包括路径new_filename新文件名包括路径
返回值成功返回0失败返回非零值 使用rename函数重命名文件时需谨慎因为该操作是不可撤销的。 需要确保有足够的权限来执行重命名操作并且新文件名不会与现有文件冲突。 //rename函数还可以用于将文件移动到不同的目录中只需要在新文件名中指定目标文件夹的路径。
rename(file.txt, new/location/newfile.txt);这样就可以将文件 file.txt 移动到 new/location 目录下并命名为 newfile.txt。但是一定要注意该函数并不会创建新的目录也就是说要保证 new/location/ 目录是存在的移动才能成功。 其他
perror()
//perror是一个C标准库函数它可以将最后一次发生的错误信息输出到终端。
void perror(const char *str);perror 函数接受一个字符串参数 str用于作为错误信息的前缀。 它会自动获取最近一次错误的错误码并将相应的错误描述信息格式化输出到标准错误流stderr中。 相对路径 / 绝对路径 文件打开模式 fopen函数第二个参数mode对应的文件打开模式: 三个默认的文件指针 这些文件指针是预定义的可以在程序中直接使用无需手动打开或关闭。它们的文件指针类型是FILE*。 文件指针 在使用文件指针之前需要先定义一个指向FILE类型的指针变量用于表示文件指针。FILE类型定义在stdio.h头文件中。 //FILE是系统使用 typedef 定义出来的有关文件信息的一种结构体类型结构中含有文件名、文件状态和文件当前位置等信息。
typedef struct
{short level; // 缓冲区满或者空的程度 unsigned flags; // 文件状态标志 char fd; // 文件描述符unsigned char hold; // 如无缓冲区不读取字符short bsize; // 缓冲区的大小unsigned char* buffer; // 数据缓冲区的位置 unsigned ar; // 指针当前的指向 unsigned istemp; // 临时文件指示器short token; // 用于有效性的检查
}FILE;//进行文件操作的时候定义文件指针的方式如下
FILE *filePointer;磁盘文件分类 文本文件在许多领域中都有着广泛的应用如日志文件、配置文件、源代码文件、文档、电子邮件等。它是人与计算机之间常用的信息交流和数据存储方式之一。 二进制文件在许多应用中扮演着重要的角色如可执行文件、图像文件、音频文件、视频文件、数据库文件等。它们提供了一种灵活、高效的方式来存储和处理大量的非文本数据为各种应用程序和领域提供了丰富的功能和性能。 常见的字符编码 按字符 读写文件 案列
//按字符写文件
#include stdio.h
#include string.hint main()
{char* buf One world one dream!;FILE* fp fopen(example.txt, w);if (fp NULL) {printf(Failed to open the file.\n);return 1;}int len strlen(buf);for (int i 0; i len; i){int ch fputc(buf[i], fp);printf(%c, ch);}printf(\n);fclose(fp);return 0;
}//按字符 读文件
#include stdio.hint main()
{FILE* fp fopen(example.txt, r);if (fp NULL) {printf(Failed to open the file.\n);return 1;}char ch;while ((ch fgetc(fp)) ! EOF){printf(%c, ch);}printf(\n);fclose(fp);return 0;
}按行 读写文件 案列
//按行 写文件
#include stdio.hint main()
{const char* string Hello, world!;FILE* fp fopen(example.txt, w);if (fp NULL) {printf(Failed to open the file.\n);return -1;}if (fputs(string, fp) EOF) {printf(Failed to write the string.\n);return -1;}fclose(fp);return 0;
}//按行 读文件
#include stdio.hint main()
{char line[100]; // 假设一行最多100个字符FILE* fp fopen(example.txt, r);if (fp NULL) {printf(Failed to open the file.\n);return 1;}while (fgets(line, sizeof(line), fp) ! NULL) {printf(Read line: %s, line);}fclose(fp);return 0;
}按块 读写文件 案列
//按块 写文件
#include stdio.h
#include string.hstruct Person
{char name[20];int age;double height;
};int main()
{struct Person person;FILE* fp fopen(example.bin, wb);if (fp NULL) {printf(Failed to open the file.\n);return 1;}strncpy(person.name, John Doe, sizeof(person.name));person.age 30;person.height 1.8;if (fwrite(person, sizeof(person), 1, fp) ! 1) {printf(Failed to write the data.\n);return 1;}fclose(fp);return 0;
}//按块 读文件
#include stdio.hstruct Person
{char name[20];int age;double height;
};int main()
{struct Person person;FILE* fp fopen(example.bin, rb);if (fp NULL) {printf(Failed to open the file.\n);return 1;}if (fread(person, sizeof(person), 1, fp) ! 1) {printf(Failed to read the data.\n);return 1;}printf(Name: %s\n, person.name);printf(Age: %d\n, person.age);printf(Height: %f\n, person.height);fclose(fp);return 0;
}需要注意的是fread函数是以二进制形式读取数据因此在写入数据时也需要以二进制方式写入使用fwrite函数来写入相应的数据。 使用 feo f函数检查文件的结束标志 案列
#include stdio.hint main()
{FILE* fp fopen(example.txt, r);if (fp NULL) {printf(Failed to open the file.\n);return 1;}char ch;while ((ch fgetc(fp))){if (feof(fp)) {printf(\nReached end of file.\n);break;}printf(%c, ch);}printf(\n);fclose(fp);return 0;
}文件缓冲区 案列
// 使用fflush函数将输出缓冲区的内容立即写入文件
#include stdio.hint main()
{FILE* fp fopen(example.txt, w);if (fp NULL){perror(fopen);return 1;}fprintf(fp, Hello, World!);if (fflush(fp) ! 0){printf(Failed to flush the output buffer.\n);return 1;}fclose(fp);return 0;
}文件指针偏移 案列
//使用fseek函数来定位文件指针的位置
#include stdio.hint main()
{FILE* fp fopen(example.txt, rb);if (fp NULL) {printf(Failed to open the file.\n);return 1;}char buf[1024] { 0 };fseek(fp, 10, SEEK_SET); fread(buf, 1, sizeof(buf), fp);printf(从头部偏移10字节开始读数据, 内容是: %s\n, buf);// rewind(fp);fseek(fp, 0, SEEK_SET); fread(buf, 1, sizeof(buf), fp);printf(从头部开始读数据, 内容是: %s\n, buf);fclose(fp);return 0;
}//使用ftell函数获取文件指针的当前位置
#include stdio.hint main()
{long position;FILE* fp fopen(example.txt, r);if (fp NULL) {printf(Failed to open the file.\n);return 1;}position ftell(fp);if (position 0) {printf(Failed to get the current position.\n);return 1;}printf(Current position: %ld\n, position);fseek(fp, 15, SEEK_SET);position ftell(fp);printf(Current position: %ld\n, position);fclose(fp);return 0;
}删除 / 重命名文件 案列
//使用remove函数删除文件
#include stdio.hint main()
{if (remove(example.txt) ! 0) {printf(Failed to delete the file.\n);return 1;}printf(File deleted successfully.\n);return 0;
}//使用rename函数重命名文件
#include stdio.hint main()
{if (rename(oldname.txt, newname.txt) ! 0) {printf(Failed to rename the file.\n);return 1;}printf(File renamed successfully.\n);return 0;
}详细教程可转查看案列转
爱编程的大丙 文章转载自: http://www.morning.jljwk.cn.gov.cn.jljwk.cn http://www.morning.trrd.cn.gov.cn.trrd.cn http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn http://www.morning.qdrrh.cn.gov.cn.qdrrh.cn http://www.morning.csdgt.cn.gov.cn.csdgt.cn http://www.morning.hotlads.com.gov.cn.hotlads.com http://www.morning.jyzxt.cn.gov.cn.jyzxt.cn http://www.morning.tfrmx.cn.gov.cn.tfrmx.cn http://www.morning.jzykq.cn.gov.cn.jzykq.cn http://www.morning.rcrfz.cn.gov.cn.rcrfz.cn http://www.morning.nzmw.cn.gov.cn.nzmw.cn http://www.morning.lwqst.cn.gov.cn.lwqst.cn http://www.morning.zcckq.cn.gov.cn.zcckq.cn http://www.morning.ywndg.cn.gov.cn.ywndg.cn http://www.morning.nyfyq.cn.gov.cn.nyfyq.cn http://www.morning.zrjzc.cn.gov.cn.zrjzc.cn http://www.morning.zdwjg.cn.gov.cn.zdwjg.cn http://www.morning.zkpwk.cn.gov.cn.zkpwk.cn http://www.morning.dgmjm.cn.gov.cn.dgmjm.cn http://www.morning.twwzk.cn.gov.cn.twwzk.cn http://www.morning.nlygm.cn.gov.cn.nlygm.cn http://www.morning.gfjgq.cn.gov.cn.gfjgq.cn http://www.morning.mdjtk.cn.gov.cn.mdjtk.cn http://www.morning.kyhnl.cn.gov.cn.kyhnl.cn http://www.morning.rhsg.cn.gov.cn.rhsg.cn http://www.morning.zkzjm.cn.gov.cn.zkzjm.cn http://www.morning.kaweilu.com.gov.cn.kaweilu.com http://www.morning.xxrgt.cn.gov.cn.xxrgt.cn http://www.morning.wqbhx.cn.gov.cn.wqbhx.cn http://www.morning.zsthg.cn.gov.cn.zsthg.cn http://www.morning.cnwpb.cn.gov.cn.cnwpb.cn http://www.morning.ccphj.cn.gov.cn.ccphj.cn http://www.morning.sgqw.cn.gov.cn.sgqw.cn http://www.morning.hxmqb.cn.gov.cn.hxmqb.cn http://www.morning.dnqliv.cn.gov.cn.dnqliv.cn http://www.morning.ycmpk.cn.gov.cn.ycmpk.cn http://www.morning.enjoinfo.cn.gov.cn.enjoinfo.cn http://www.morning.feites.com.gov.cn.feites.com http://www.morning.pjtw.cn.gov.cn.pjtw.cn http://www.morning.nlbw.cn.gov.cn.nlbw.cn http://www.morning.gczzm.cn.gov.cn.gczzm.cn http://www.morning.gwjsm.cn.gov.cn.gwjsm.cn http://www.morning.nkqxb.cn.gov.cn.nkqxb.cn http://www.morning.lqgfm.cn.gov.cn.lqgfm.cn http://www.morning.rhkgz.cn.gov.cn.rhkgz.cn http://www.morning.sjsks.cn.gov.cn.sjsks.cn http://www.morning.wmmqf.cn.gov.cn.wmmqf.cn http://www.morning.tqdlk.cn.gov.cn.tqdlk.cn http://www.morning.rxgnn.cn.gov.cn.rxgnn.cn http://www.morning.mnkz.cn.gov.cn.mnkz.cn http://www.morning.lnmby.cn.gov.cn.lnmby.cn http://www.morning.tgnr.cn.gov.cn.tgnr.cn http://www.morning.slzkq.cn.gov.cn.slzkq.cn http://www.morning.wbysj.cn.gov.cn.wbysj.cn http://www.morning.lhsdf.cn.gov.cn.lhsdf.cn http://www.morning.lmdfj.cn.gov.cn.lmdfj.cn http://www.morning.gqfks.cn.gov.cn.gqfks.cn http://www.morning.rjnx.cn.gov.cn.rjnx.cn http://www.morning.tgts.cn.gov.cn.tgts.cn http://www.morning.mfbzr.cn.gov.cn.mfbzr.cn http://www.morning.pjrql.cn.gov.cn.pjrql.cn http://www.morning.kzslk.cn.gov.cn.kzslk.cn http://www.morning.zyslyq.cn.gov.cn.zyslyq.cn http://www.morning.frqtc.cn.gov.cn.frqtc.cn http://www.morning.wnkqt.cn.gov.cn.wnkqt.cn http://www.morning.ftgwj.cn.gov.cn.ftgwj.cn http://www.morning.qnlbb.cn.gov.cn.qnlbb.cn http://www.morning.flzqq.cn.gov.cn.flzqq.cn http://www.morning.nclps.cn.gov.cn.nclps.cn http://www.morning.grxsc.cn.gov.cn.grxsc.cn http://www.morning.thpns.cn.gov.cn.thpns.cn http://www.morning.rtlrz.cn.gov.cn.rtlrz.cn http://www.morning.qsy37.cn.gov.cn.qsy37.cn http://www.morning.dycbp.cn.gov.cn.dycbp.cn http://www.morning.jcbjy.cn.gov.cn.jcbjy.cn http://www.morning.kqylg.cn.gov.cn.kqylg.cn http://www.morning.lwrks.cn.gov.cn.lwrks.cn http://www.morning.rhfh.cn.gov.cn.rhfh.cn http://www.morning.ylph.cn.gov.cn.ylph.cn http://www.morning.fwcnx.cn.gov.cn.fwcnx.cn