文件类型指针 FILE *fp – 文本文件:r只读、w只写 二进制文件:rb只读、wb只写
打开文件
*fp = fopen(“文件名”,“方式”);
如:fp = fopen("file1.txt" , "r"); –
关闭文件
*fp = fclose(“文件名”);
如:fclose(fp);–
必须加: if(fp == NULL) { perror(“打开文件时发生错误”); exit(1); 或 return(-1); }
文本文件
fputc(int char, FILE *stream) : 把参数 char 指定的字符(一个无符号字符)写入到给定流 stream中,并把位置标识符往前移动。 fputc("这是 C 语言。\n",fp);–顺序写入
fgetc(FILE *stream) : 从给定流 stream获取下一个字符(一个无符号字符),并把位置标识符往前移动。 int c = fgetc(fp);–顺序读取
二进制文件
rewind(FILE *stream) : 设置文件位置为给定流 stream 的文件的开头。 rewind(fp);–
fscanf(FILE *stream, const char *format, …) : 从给定流 stream 读取格式化输入。 如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。 fscanf(fp, "%s %s %s %d", str1, str2, str3, &year); --读取
注:EOF 是end of file的缩写。 “!=EOF” 表示文件还没有结束,“=EOF” 表示到文件末尾了。 你在用函数读入文件数据的时候,函数总会返回一个状态,是读取成功还是失败,那么这个状态怎么表示呢,所以就约定俗成定义一个标识符表示这个状态,就有了EOF
fprintf(FILE *stream, const char *format, …) 发送格式化输出到流 stream 中。 fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);–写入
打开文件,就是建立文件缓冲区。关闭文件,就是要强制 地把文件缓冲区中的内容写到磁盘文件中。
源代码1 fputc
FILE
*fp
;
fp
=fopen("file1.txt","w");
if(fp
==NULL){
printf("open error!\n");
exit(1);
}
fputc("这是 C 语言。\n",fp
);
fputc("这是一种系统程序设计语言。\n",fp
);
fclose(fp
);
运行结果1 fputc
出现了相应的文本文件:
文件内容 : 这是 C 语言。 这是一种系统程序设计语言。
源代码2 fgetc
int main
()
{
FILE
*fp
;
int c
;
int n
= 0;
fp
= fopen("file.txt","r");
if(fp
== NULL)
{
perror("打开文件时发生错误");
return(-1);
}
do
{
c
= fgetc(fp
);
if( feof(fp
) )
{
break ;
}
printf("%c", c
);
}while(1);
fclose(fp
);
return(0);
}
运行结果2 fgetc
file.txt文件中内容 : We are in 2014 -
源代码3 fscanf
int main()
{
char str1
[10], str2
[10], str3
[10];
int year
;
FILE
* fp
;
fp
= fopen
("file.txt", "w+");
fputs("We are in 2014", fp
);
rewind(fp
);
fscanf(fp
, "%s %s %s %d", str1
, str2
, str3
, &year
);
printf("Read String1 |%s|\n", str1
);
printf("Read String2 |%s|\n", str2
);
printf("Read String3 |%s|\n", str3
);
printf("Read Integer |%d|\n", year
);
fclose(fp
);
return(0);
}
运行结果3 fscanf
Read String1
|We
|
Read String2
|are
|
Read String3
|in
|
Read Integer
|2014|
源代码4 fprintf
int main()
{
FILE
* fp
;
fp
= fopen
("file.txt", "w+");
fprintf(fp
, "%s %s %s %d", "We", "are", "in", 2014);
fclose(fp
);
return(0);
}
运行结果4 fprintf
将创建文件 file.txt,它的内容: We are in 2014 -