文件在C语言的定义如下:
typedef struct _iobuf
{
char* _ptr;
int _cnt;
char* _base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char* _tmpfname;
} FILE; //可以使用FILE来定义变量
文件操作在C语言中的定义:
/*
* File Operations
*/
_CRTIMP FILE* __cdecl __MINGW_NOTHROW fopen (const char*, const char*);
_CRTIMP FILE* __cdecl __MINGW_NOTHROW freopen (const char*, const char*, FILE*);
_CRTIMP int __cdecl __MINGW_NOTHROW fflush (FILE*);
_CRTIMP int __cdecl __MINGW_NOTHROW fclose (FILE*);
//关闭文件
文件的打开函数
fopen (const char*, const char*);
第一个参数:文件名
第二个参数:文件打开方式
文件使用方式:
/*文件的使用方式总结:
"r" (只读) 以只读方式打开文本文件
"w" (只写) 打开或者建立一个文本文件,只允许写数据(会清空原有数据)
"a" (追加) 打开一个文本文件,并在末尾写数据
"rb" (只读) 以只读方式打开二进制文件
"wb: (只写) 打开或者建立一个二进制文件,只允许写数据
"ab" (追加) 打开一个二进制文件,并在末尾写数据
"r+" (读写) 打开一个文本文件,允许读和写
"w+" (读写) 打开或者建立一个文本文件,允许读写
"a+" (读写) 打开一个文本文件,读或者在文件末尾写数据
"rb+" (读写) 打开一个二进制文件,允许读和写
"wb+" (读写) 打开或者一个二进制文件,允许读和写
"ab+" (读写) 打开一个二进制文件,读或者在文件末尾写数据
*/
补充一下字符输出输入功能函数:
/*
* Character Input and Output Functions
*/
_CRTIMP int __cdecl __MINGW_NOTHROW fgetc (FILE*);
/*fgetc (FILE*)读取到文件的是第一个字符
* 文件结束集返回EOF
*/
_CRTIMP char* __cdecl __MINGW_NOTHROW fgets (char*, int, FILE*);
/* 读取文件字符串
* fgets(字符数组名,字符串中字符个数,文件指针)
*/
_CRTIMP int __cdecl __MINGW_NOTHROW fputc (int, FILE*);
/*把一个字符写入到磁盘文件中
* int:写入的字符
* FILE*:指向操作的文件指针
* 函数输出成功时,返回输入的字符,失败则返回EOF
*/
_CRTIMP int __cdecl __MINGW_NOTHROW fputs (const char*, FILE*);
/* 写入字符串到文件
* fputs(字符串常量,文件指针)
* const char*:写入的字符串
* FILE*:指向操作的文件指针
*/
_CRTIMP char* __cdecl __MINGW_NOTHROW gets (char*);
_CRTIMP int __cdecl __MINGW_NOTHROW puts (const char*);
_CRTIMP int __cdecl __MINGW_NOTHROW ungetc (int, FILE*);
实例一:文件的读取
#include <stdio.h>
int main()
{
FILE *fp1, *fp2, *fp3;
char file1[20], file2[20], file3[20], ch;
int file_number;//文件个数
printf("please input file1\n");
gets(file1);//输入文件路径和名称
printf("file1:\n");
if((fp1=fopen(file1,"r"))!=NULL){
ch=fgetc(fp1);//读取文件内容,此时ch的内容是文件的第一个文本数据
while(ch!=EOF){//循环遍历文件内容;文本内容结束或者没有就返回EOF
putchar(ch);//输出字符
ch=fgetc(fp1);//读取下一个文本数据
}//读取字符
}else{//文件为空的话就退出
printf("can not open");
exit(1);
}
printf("\n please input file2\n");
gets(file2);//输入文件路径和名称
printf("file2:\n");
if((fp2=fopen(file2,"r"))!=NULL){
ch=fgetc(fp2);//读取文件内容
while(ch!=EOF){//循环遍历文件内容
putchar(ch);//输出字符
ch=fgetc(fp2);}//读取字符
}else{//文件为空的话就退出
printf("can not open");
exit(1);
}
printf("please input file3\n");
gets(file3);//输入文件路径和名称
printf("file3:\n");
if((fp3=fopen(file3,"r"))!=NULL){
ch=fgetc(fp3);//读取文件内容
while(ch!=EOF){//循环遍历文件内容
putchar(ch);//输出字符
ch=fgetc(fp3);}//读取字符
}else{//文件为空的话就退出
printf("can not open");
exit(1);
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}
实例二:往文件写入数据
#include <stdio.h>
#include<stdlib.h>
int main()
{
int a;
FILE *fp;
char ch, filename[20];
printf("请输入文件名:\n");
scanf("%s",filename);//名输入文件
if((fp=fopen(filename,"w"))==NULL){
printf("不能打开文件\n");
exit(0);
}
ch=getchar();//接收输入字符,赋给ch
while(ch!='#'){
fputc(ch,fp);//将读入的字符写入文件
ch=getchar();
}
fclose(fp);
return 0;
}
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。