目录
1. 文件打开与关闭
1.1 打开文件 fopen( )
(1)函数功能:使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件
(2)函数原型:
FILE *fopen( const char *filename, const char *mode );
(3)参数解释:
- filename:字符串,文件名
- mode:打开模式,常用的有 r、w、a
1.2 关闭文件 fclose()
(1)函数功能:
清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。
(2)函数原型:
int fclose( FILE *fp );
如果成功关闭文件,fclose( ) 函数返回零,如果关闭文件时发生错误,函数返回 EOF。
FILE *f;
f=fopen("test.log","r");
if(f == NULL)
printf("file open failed.\r\n")
fclose(f)
2. 读取文件
2.1 fgetc()
(1)函数功能
fgetc() 函数从 fp 所指向的输入文件中读取一个字符。
(2)函数原型
int fgetc( FILE * fp );
返回值是读取的字符,如果发生错误则返回 EOF。
2.2 fgets()
(1)函数功能
fgets() 从 fp 所指向的输入流中读取 n - 1 个字符。它会把读取的字符串复制到缓冲区 buf,并在最后追加一个 null 字符来终止字符串。
如果这个函数在读取最后 n - 1个字符之前就遇到一个换行符 ‘\n’ 或文件的末尾 EOF,则只会返回读取到的字符,包括换行符,即读取一行。
(2)函数原型
char *fgets( char *buf, int n, FILE *fp );
(3)示例
int main()
{
FILE *f;
f = fopen("test_log", "r");
if (f ==NULL)
printf("file open failed.\r\n");
char data[100] = {0};
fgets(data, 100, f);
printf("%s\r\n", data);
fclose(f);
return 0;
}
输出结果:
this is test log.
2.3 fscanf()
(1)函数功能
从文件中读取字符串,但是在遇到第一个空格和换行符时,它会停止读取。
(2)函数原型
int fscanf(FILE *fp, const char *format, ...)
- format:格式描述符 %s %d
- 省略号可以是一序列数目不定的指针参数,存储读取的数据。
(3)示例
将上述例子中的 fgets() 替换为 fscanf() 函数。
int main()
{
FILE *f;
f = fopen("test_log", "r");
if (f ==NULL)
printf("file open failed.\r\n");
char data[200] = {0};
// fgets(data, 100, f);
fscanf(f, "%s", data);
printf("%s\r\n", data);
fclose(f);
return 0;
}
输出结果:
this
使用 fscanf() 读取时,遇到空格就停止了,可以使用以下方式逐个提取。
int main()
{
FILE *f;
f = fopen("test_log", "r");
if (f ==NULL)
printf("file open failed.\r\n");
char str1[100], str2[100], str3[100], str4[100];
fscanf(f, "%s %s %s %s", str1, str2, str3, str4);
printf("%s %s %s %s\r\n", str1, str2, str3, str4);
fclose(f);
return 0;
}
输出结果
this is test log.
3. 写入文件
3.1 fputc()
(1)函数功能
写入单个字符: fputc() 把参数 c 的字符值写入到 fp 所指向的输出流中。
如果写入成功,它会返回写入的字符,如果发生错误,则会返回 EOF。
(2)函数原型
int fputc( int c, FILE *fp );
(3)示例
void fputc_test()
{
FILE *f;
f = fopen("test_log", "a");
if (f ==NULL)
printf("file open failed.\r\n");
fputc('h', f);
fclose(f);
}
3.2 fputs()
(1)函数功能
写入字符串 fputs() 把字符串 s 写入到 fp 所指向的输出流中。
如果写入成功,它会返回一个非负值,如果发生错误,则会返回 EOF。
(2)函数原型
int fputs( const char *s, FILE *fp );
(3)示例
void fputs_test()
{
FILE *f;
f = fopen("test_log", "a");
if (f ==NULL)
printf("file open failed.\r\n");
char data[] = "puts test.";
fputs(data, f);
fclose(f);
}
3.3 fprintf()
(1)函数原型
int fprintf(FILE *fp,const char *format, ...)
(2)示例
void fprintf_test()
{
FILE *f;
f = fopen("test_log", "a");
if (f ==NULL)
printf("file open failed.\r\n");
char data[] = "puts test.\r\n";
fprintf(f, "%s", data);
fclose(f);
}