用函数fopen_s打开数据文件
1. fopen_s函数的用法
fopen_s函数声明如下:
errno_t fopen_s (
FILE** pFile,
const char *filename,
const char *mode
);
- fopen_s函数有3个参数,它的调用方式为:fopen_s(指针,文件名,使用文件方式);
-
FILE** pFile:其中指针是用来接收 <指向目标文件的指针> 的指针。
- fopen函数的返回值就是这里的FILE** pFile
- 参数定义:
FILE *fp;
fp是一个指向FILE类型数据的指针;&p就是指向FILE类型数据的指针的地址,也就是<指向FILE类型数据的指针变量>的指针。只要记住,fopen_s的参数用法类似如下:FILE *fp;
fopen_s(&fp, filename, "w")
-
fopen_s函数的返回值与fopen不同。正确打开返回0,不正确返回非0。
-
要定义一个变量err来接收fopen_s函数的返回值,即:
errno_t err;
其中errno_t是int的别名,typedef int errno_t;
,即err是个整型值。通过判断err的值是否为0,可以知道打开数据文件成功与否。 -
判断打开成功与否fopen_s用:
(err = fopen_s(&fp, filename, “w”)) !=0
-
而fopen判断打开成功与否,用:
fp = fopen(filename, “w”)) == NULL
打开失败返回空指针NULL。
-
2. 程序实例
从键盘输入一些字符,逐个把它们送到磁盘上去,直到用户输入一个“#”为止。
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
errno_t err; //不同点1
char ch, filename[10];
printf("请输入所用的文件名:");
scanf_s("%s", filename,10);
if ((err = fopen_s(&fp, filename, "w")) !=0) //不同点2
{
printf("无法打开此文件\n"); //如果打不开,就输出打不开
exit(0); //终止程序
}
ch = getchar(); //用来接收最后输入的回车符
printf("请输入一个准备存储到磁盘的字符串(以#结束):");
ch = getchar(); //用来接收从键盘输入的第一个字符
while (ch != '#') //当输入“#”时结束循环
{
fputc(ch, fp); //向磁盘输出一个字符
putchar(ch); //将输出的字符显示在屏幕上
ch = getchar(); //再接收从键盘输入的一个字符
}
fclose(fp); //关闭文件
putchar(10); //向屏幕输出一个换行符
return 0;
}
C程序输出结果:
请输入所用的文件名:file1.dat
请输入一个准备存储到磁盘的字符串(以#结束):computer and c#
computer and c
请按任意键继续. . .