freopen函数的用法(fopen_s用法)

freopen函数的用法(fopen_s用法)

扫码添加渲大师小管家,免费领取渲染插件、素材、模型、教程合集大礼包!

大家好,今天来介绍freopen函数的用法(c++中freopen函数的用法)的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!

freopen的用法

当我们求解acm题目时,通常在设计好算法和程序后,要在调试环境(例如VC等)中运行程序,输入测试数据,当能得到正确运行结果后,才将程序提交到oj中。但由于调试往往不能一次成功,每次运行时,都要重新输入一遍测试数据,对于有大量输入数据的题目,输入数据需要花费大量时间。
使用freopen函数可以解决测试数据输入问题,避免重复输入,不失为一种简单而有效的解决方法。

函数名:freopen
声明:FILE *freopen( const char *path, const char *mode, FILE *stream );
所在文件: stdio.h
参数说明:
path: 文件名,用于存储输入输出的自定义文件名。
mode: 文件打开的模式。和fopen中的模式(如r-只读, w-写)相同。
stream: 一个文件,通常使用标准流文件。
返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。(一般可以不使用它的返回值)
功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。

下面以在VC下调试“计算a+b”的程序举例。
C语法:
#include
int main()
{
int a,b;
freopen("debug\\in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
freopen("debug\\out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中
while(scanf("%d %d",&a,&b)!=EOF)
printf("%d\n",a+b);
fclose(stdin);//关闭文件
fclose(stdout);//关闭文件
return 0;
}

C++语法
#include
#include
int main()
{
int a,b;
freopen("debug\\in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
freopen("debug\\out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文消态巧件中
while(cin>>a>>b)
cout<<a+b<<endl; // 注意使用endl
fclose(stdin);//关闭文件
fclose(stdout);//关闭文件
return 0;
}
freopen("debug\\in.txt","r",stdin)的作用就是把标准输入流stdin重定向到debug\\in.txt文件中,这样在用scanf或是用cin输入时便不会从标准输入流读取数据,而是从in.txt文件中获取输入。只要把输入数据事先粘贴到in.txt,调试时就方便多了。
类似的,freopen("debug\\out.txt","w",stdout)的作用就是把stdout重定向到debug\\out.txt文件中,这样输出拿键结果需要打开out.txt文件查看。

需要说明的是:
1. 在freopen("debug\\in.txt","r",stdin)中,将输入文件in.txt放在文件夹debug中,文件夹debug是在VC中建立工程文闭衡件时自动生成的调试文件夹。如果改成freopen("in.txt","r",stdin),则in.txt文件将放在所建立的工程文件夹下。in.txt文件也可以放在其他的文件夹下,所在路径写正确即可。
2. 可以不使用输出重定向,仍然在控制台查看输出。
3. 程序调试成功后,提交到oj时不要忘记把与重定向有关的语句删除。

C++中freopen函数应该怎么用呢

freopen用于替换一个文件流指针,它会先关闭原来的,再将指针赋值为新的文件指针。
通常用于将标准输入输出该文读写文件。
比如想让所有的cin或scanf都是从文件文件读取的话,仿带写:
freopen("~filename~","r",stdin)
如果想棚大蔽将原来输出到控制台的内容(用cout或printf等),写:链州
freopen("~filename~","w",stdout)

请教一下怎么用freopen()函数来读写文件啊!!急~~~

freopen 用法
函数原形 FILE *freopen(char *filename, char *type, FILE *stream);
第一个参数 filename 是文件名
第二个参数一般是 "r" 或 "肢帆顷w", "r" 代表是从文件读入,"w"代表是写
入到文件
第三个参数一般是 stdin 代表文件读入, 和第二个参数 "r" 连用
stdout 代表写入到文件,和 第二个参数 "w" 连用
用法举例
freopen("a.txt","r",stdin ); 执行这条语句后, 程序中下面所有的
读入将从文件 "a.txt" 中读入
如:
#include
#include
int main()
{
char ch;
freopen("a.txt","r",stdin);

while( ch= getchar()!= '\n' )
putchar(ch);

return 0 ;
}
对于这个程序, 那么在控制台下的读入都无效, 他只会从文件
"a.txt"中读入. 运行这个程序前你得先建一个文件 a.txt , 与你的代码
生成的 .exe 文件在同一文件夹中。大家可轿孝以试试看。
如果再加一个语句, 程序变为
#include
#include
int main()
{
char ch;
freopen("a.txt","r",stdin);
freopen("b.txt","w",stdout);

while( ch= getchar()!= '\n' )
putchar(ch);

return 0 ;
}
程序不会输出任何东西在控制台下, 而把所有输出输出到文件 "b.txt" 中
这个 b.txt 文件可以先不建, 程序会自动在与 .exe 文件相同目录下建立
另外还有两个问题
1. 如何判断文件是否打开了历陆
可以直接 if( freopen("a.txt","r",stdin)== NULL ) return false;
或 if( freopen("b.txt","w",stdout)== NULL ) return false;
表示没有打开
2. 如何使流重新回到控制台上
如果你不想输入或输出到文件了,就加上一句
freopen("CON","r",stdin ); 对应输入
freopen("CON","w",stdout); 对应输出
注意的问题, 因为参数都是 c_字符串, 故不能把 c++ 里面的 string 类对
象作为参数传进去
比如 string str= "a.txt";
你不能这样写 freopen( str, "r", stdin );
可以先把 string 类对像化成 c_字符串, 就用 c_str() 函数
上面的可以这样写 freopen( str.c_str(), "r", stdin );
祝大家用的开心, 呵呵。。

C语言文件操作函数freopen的用法

fopen()函数功能:打开一个文件。
原型:FILE * fopen(const char * path,const char * mode);
需要#include

返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则毕拿返回扰轿NULL,并手李搭把错误代码存在errno 中。
一般打开文件会进行读取或写入操作,如果打开文件失败,也就无法顺利进行相应的读写操作,所以一般在调用fopen()之后要作错误判断及处理。

freopen函数的用法

用于指定新文件的亏缓穗访问方式。
freopen函数,以指定模式重新指定到另一个文件。模式用于指定新文件的访问方式。头文件:stdio.hC89函数声明:C99函数声明:形参说明:filename:需要哪坦重定向销卜到的文件名或文件路径。mode:代表文件访问权限的字符串。

分享到 :
相关推荐

Vultr使用教程:如何在Fedora上重置根密码

Vultr作为一家优秀的国外主机商。多年来凭借高性能的云服务器产品及完善的售后服务。...

香港vps云服务器租用要注意哪些问题(香港vps云服务器租用要注意哪些问题呢)

香港vps云服务器租用要注意的问题有:1。租用前要先测试网络ping值的速度。看带宽...

日本云服务器怎样租用稳定可靠(日本云服务器怎样租用稳定可靠的)

日本云服务器怎样租用稳定可靠?有很多做跨境电商的。日韩服游戏开服的等等用户会租用日本...

WordPress静态缓存插件WP Super Cache使用教程(WordPress缓存)

WPSuperCache是一款具有静态化加速功能的缓存插件。它可以将动态的Wor[&...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注