在C语言中,fopen函数用于打开一个文件,以便对其进行读取或写入操作,fopen函数的原型如下:
FILE *fopen(const char *filename, const char *mode);
filename
是一个字符串,表示要打开的文件的名称;mode
也是一个字符串,表示文件打开的模式,如只读、写入、追加等,fopen函数返回一个FILE指针,如果文件打开成功,则返回非空指针;否则返回NULL。
下面详细介绍fopen函数的使用方法:
1、打开文件
使用fopen函数打开文件时,需要指定文件名和打开模式,常用的文件打开模式有:
"r":以只读方式打开文件,这是默认值。
"w":以写入方式打开文件,如果文件不存在,则创建新文件;如果文件已存在,则清空原有内容。
"a":以追加方式打开文件,如果文件不存在,则创建新文件;如果文件已存在,则在原有内容后追加新内容。
"r+":以读写方式打开文件,如果文件不存在,则创建新文件;如果文件已存在,则清空原有内容。
"w+":以读写方式打开文件,如果文件不存在,则创建新文件;如果文件已存在,则清空原有内容。
"a+":以读写方式打开文件,如果文件不存在,则创建新文件;如果文件已存在,则在原有内容后追加新内容。
要以只读方式打开名为"example.txt"的文件,可以使用以下代码:
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "r"); if (file == NULL) { printf("无法打开文件! "); return 1; } // 进行文件操作... fclose(file); // 关闭文件 return 0; }
2、关闭文件
在使用完一个文件后,应该使用fclose函数将其关闭,这样可以释放系统资源,避免内存泄漏,fclose函数的原型如下:
int fclose(FILE *stream);
stream
是FILE指针,表示要关闭的文件,fclose函数返回0表示关闭成功,返回EOF表示关闭失败,可以这样关闭前面打开的文件:
if (fclose(file) != 0) { printf("关闭文件失败! "); return 1; }
3、读取文件内容
在打开一个文件后,可以使用各种输入函数(如fgetc、fgets、fscanf等)从文件中读取数据,要读取一个整数到变量n中,可以使用以下代码:
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "r"); if (file == NULL) { printf("无法打开文件! "); return 1; } int n; if (fscanf(file, "%d", &n) != 1) { // 读取一个整数到n中 printf("读取数据失败! "); fclose(file); // 关闭文件并返回错误代码1 return 1; } printf("读取到的整数为:%d ", n); // 输出读取到的整数n fclose(file); // 关闭文件并返回0表示正常结束 return 0; }
4、写入文件内容
在打开一个文件后,可以使用各种输出函数(如fputc、fputs、fprintf等)将数据写入到文件中,要将整数n写入到一个名为"output.txt"的文件中,可以使用以下代码:
#include <stdio.h> int main() { FILE *file = fopen("output.txt", "w"); // 以写入方式打开一个名为"output.txt"的文件 if (file == NULL) { printf("无法打开文件!"); // 如果打开失败,输出错误信息并返回错误代码1 return 1; } int n = 42; // 要写入的整数n为42 if (fprintf(file, "%d", n) < 0) { // 将整数n写入到文件中,并检查是否写入成功(返回值小于0表示写入失败) printf("写入数据失败!"); // 如果写入失败,输出错误信息并关闭文件并返回错误代码1 fclose(file); // 关闭文件并返回错误代码1 return 1; } else { // 如果写入成功,输出提示信息并关闭文件并返回0表示正常结束(成功) printf("整数已成功写入到文件中!"); // 输出提示信息 fclose(file); // 关闭文件并返回0表示正常结束(成功) return 0; // 返回0表示正常结束(成功) } } } } } } } } } } } } }/* */*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*//* */*/*/*/*/*/*/*/*/*/*/*/*/*//* */*/*//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* *//* /* *//* *//* *//* *//* /* *//* *//* /* *//* /* *//* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /*/
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/`/'main' '('int' 'argc',char' **'argv')' {FILE' *'fp';fp = fopen('test.txt', 'w');if (fp == NULL) {puts('无法打开该文本文档');exit(1);};while (1){char' ch;ch = getchar();if (ch == 'q') break;else fputc(ch, fp);};printf("文本文档已保存!");return'0';}}'''main' '('int' 'argc',char' **'argv')' {FILE' *'fp';fp = fopen('test.txt', 'w');if (fp == NULL) {puts('无法打开该文本文档');exit(1);};while (1){char' ch;ch = getchar();if (ch == 'q') break;else fputc(ch, fp);};printf("文本文档已保存!");return'0';}}'''main' '('int' 'argc',char' **'argv')' {FILE' *'fp';fp = fopen('test.txt', 'w');if (fp == NULL) {puts('无法打开该文本文档');exit(1);};while (1){char' ch;ch = getchar();if (ch == 'q') break;else fputc(ch, fp);};printf("文本文档已保存!");return'0';}}'''main' '('int' 'argc',char' **'argv')' {FILE' *'fp';fp = fopen('test.txt', 'w');if (fp == NULL) {puts('无法打开该文本文档');exit(1);};while (1){char' ch;ch = getchar();if (ch == 'q') break;else fputc(ch, fp);};printf("文本文档已保存!");return'0';}}'''main' '('int' 'argc',char' **'argv')' {FILE' *'fp';fp = fopen('test.txt', 'w');if (fp == NULL) {puts('无法打开该文本文档');exit(1);};while (1){char' ch;ch = getchar();if (ch == 'q') break;else fputc(ch, fp);};printf
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/361540.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复