标签:文件 fopen 函数 stdin freopen debug txt 输入
freopen函数的使用:参见这篇博客https://www.cnblogs.com/moonlit/archive/2011/06/12/2078712.html
#include <stdio.h> 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; }
#include <stdio.h> #include <iostream.h> 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时不要忘记把与重定向有关的语句删除
freopen与fopen的区别:参见这篇博客:https://blog.csdn.net/joapolarbear/article/details/69062946
freopen作用是将标准输入输出重定向,stdin从键盘重定向到文件,stdout从屏幕重定向到文件,stderr也从屏幕重定向到文件,这样操作的弊端就是会使得所有输入输出都将在文件中操作,而如果不想改变标准输入输出的方向,而只是想把部分数据写入到文件或部分数据从文件中读取,那么就需要用到fopen函数了,这个函数会为每个文件单独创建一个文件输入流或输出流,而不会改变整体的输入输出流方向,所以这两个函数都是有很大用处的
C语言中freopen()函数是用来重新定向的,所谓重新定向是给输入和输出的位置重新定向。原本输入位置是键盘缓存区,输出在屏幕上,用了重新定向后可以将输入位置改变成一个文件,而输出位置也可以输出到一个文件中,具体代码可以这么写:
freopen ("text.txt","r",stdin); freopen ("text1.txt","w",stdout);
这里输入和输出便都在文件中操作了。可是这样做有一个弊端,就是所有输入输出都将在文件中操作,如何灵活控制呢?这就要用到fopen()函数了,可以自由在文件输入输出中转换,具体语法是:
FILE *fin,*fout; fin = fopen("text.txt","rb"); fout = fopen("text1.txt","wb"); fscanf (fin,"%d",&x); fprintf (fout,"%d",x); fclose(fin); fclose(fout);
这里函数稍微复杂了些,不过仔细看看也蛮简单的,最重要的是多了文件关闭操作,这样是为了不持续占用系统资源。在读取、写入操作时用“rb”的原因是为了兼容Linux系统,只在windows下运行只要“r”即可,同样,scanf和printf函数都要改成fscanf和fprintf,在前面加上你要输入的文件和输出的文件名,这样就可以有选择性的操作文件了。
感谢两位博主:https://www.cnblogs.com/moonlit/archive/2011/06/12/2078712.html
https://blog.csdn.net/joapolarbear/article/details/69062946
标签:文件,fopen,函数,stdin,freopen,debug,txt,输入 来源: https://blog.51cto.com/u_14201949/2832182
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。