#include
FILE * fopen(const char *filename,const char *mode);
参数:
filename:需要打开的文件名,根据需要加上路径
mode:打开文件的模式设置
返回值:
返回值:
成功:文件指针
失败:NULL(找不到文件、没有权限、程序打开文件超出上限)
例:
FILE *fp = fopen("F:\\baidu\\hello.txt","w");
文件路径加文件全名(含后缀)
..\..\文件全名(含后缀)
mode取值范围:
r\rb:只读,不创建文件,若文件不存在则报错
w\wb:写,如果文件存在则清空文件,文件不存在创建文件
r+\rb+:以可读可写方式打开文件,不创建新文件
w+\wb+:以可读可写方式打开文件,如果文件存在则清空文件,不存在,创建一个文件
a\ab:以追加方式打开文件,在末尾添加内容,若文件不存在则创建
a+\ab+:以添加文件方式打开文件,打开文件并在末尾更改文件,若文件不存在,则添加一个文件
注意:b是二进制模式的意思,b只在windows有效,在linux用r和rb的结果一样
unix和linux下所有的文本文件行都是\n结尾,而windows所有的文本文件行都是\r\n结尾
#include
int fclose(FILE*stream)
功能:
关闭先前fopen()打开的文件,此动作让缓冲区的数据写入文件中,并释放系统所提供的文件资源
参数:
stream:文件指针
返回值:
成功:0
失败:-1
#include
int fputc(int ch,FILE*stream);
功能:
将ch转换为unsigeed char后写入stream指定的文件中
参数:
ch:需要写入文件的字符
stream:文件指针
返回值:
成功:成功写入文件的字符
失败:返回-1
例:
int i = 0;
char fileName[256];
printf("请输入一个需要创建的文件名\n");
scanf("%s", fileName);
FILE* file = fopen(fileName, "w");
if (file == NULL)
return -1;
char bus[1024];
memset(bus, 0, 1024);
scanf("%s", bus);
/*
gets(bus);
同:
fgets(bus,1024,stdin);
同:
scanf("%s", bus);
*/
while (bus[i]!='\0')
{
fputc(bus[i], file);
++i;
}
fclose(file);
}
#include
int fgetc(FILE*stream)
功能:
从stream指定的文件中读取一个字符
参数:
stream:文件指针
返回值:
成功:返回读取到的字符
失败:-1
例:
char fileName[256];
printf("请输入要查看的文件名\n");
scanf("%s", fileName);
FILE* file = fopen(fileName,"r");
if (!file)
return -1;
char ch;
while ((ch = fgetc(file)) != EOF)
{
printf("%c", ch);
}
fclose(file);
当把数据以二进制形式存放到文件中时,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志,为解决这一个文件,ANSI C提供一个feof函数,用来判断文件是否结束。feof函数即可用以判断二进制文件又可用以判断文本文件。
#include
int feof(FILE* stream)
功能:
检测是否读取到了文件结尾,判断的是最后一次“读操作的内容”,不是当前位置内容(上一个内容)
参数:
stream:文件指针
返回值:
非0值:已经到文件结尾
0:没有到文件结尾
char* fgets(char* s,int size,FILE*stream)
功能:
从steam指定的文件内读入字符,保存到s所指定的内存空间,直到出现换行符、读到文件结尾或是已读了sizeof-1个字符为止,最后会自动加上字符’\0‘作为字符串结束标志
参数:
s:字符串
size:指定最大读取字符串的长度(size-1)
stream:文件指针,如果读键盘输入的字符串,固定写为stdin
返回值:
成功:成功读取到字符串
读到文件尾或出错:NULL
例:
char fileName[256];
printf("请输入查看的文件名");
scanf("%s", fileName);
FILE* file = fopen(fileName, "r");
char ch[5];
if(!file)
return -1;
while (!feof(file))
{
memset(ch, 0, 5);
fgets(ch, 5, file);
printf("%s", ch);
}
fclose(file);
int fputs(const char* str,FILE* stream)
功能:
将str所指定的字符串写入到stream指定的文件中,字符串结束符“\0"不写入文件
参数:
str:字符串
stream:文件指针,直接输出固定写为stdout
返回值:
该函数返回一个非负值,如果发生错误则返回 EOF
例:
char fileName[256];
printf("请输入一个需要创建的文件名");
scanf("%s", fileName);
FILE* file = fopen(fileName, "w");
char ch[1024];
if(!file)
return -1;
while (1)
{
memset(ch, 0, 1024);
fgets(ch, 1024, stdin);
if (strncmp("exit", ch, 4) == 0)
{
break;
}
fputs(ch, file);
}
fclose(file);
#includen
int fprintf(FILE*stream,const char*format,...);
功能:
根据参数format字符串来转换并格式化数据,然后将结果输出到stream指定的文件中,指定出现字符串结束符‘\0’为止
参数:
stream:已经打开的文件
formar:
字符串格式,用法和printf()一样
返回值:
成功:实际写入文件的字符个数
失败:返回一个负数
#includen
int fscanf(FILE*stream,const char*format,...);
功能:
从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与[fgets](https://baike.baidu.com/item/fgets)有区别,fgets遇到空格不结束。
参数:
stream:已经打开的文件
formar:
字符串格式,用法和scanf()一样
返回值:
成功:返回成功匹配和赋值的个数
失败:到达文件末尾或发生读错误,返回EOF