有以下三种方式可以做到:
1 使用重定向函数freopen将标准输出重定向到对应的txt文件。
其使用方法为,在所有的系统输出前,调用
stdout = freopen("out.txt", "w", stdout);
out.txt即所要写入的txt文件名。
2 在执行时处理。
编译最终生成的为可执行文件,运行也是运行这个文件。
在运行文件时,可以通过重定向符号,将输出重定向到其它文件。
如果生成的可执行文件为my.exe,那么在命令行调用
my.exe > out.txt
即可将my.exe的输出写入到out.txt中。
3 以上两种方法都是把所有的标准输出,包括printf, puts, putchar等,均输入到对应文件中。
如果要仅输出printf的结果,可以先打开文件,然后修改代码,把每个printf的调用修改对应的写文件函数。即printf(xxxx);修改为fprintf(fp, xxxxx);的形式。
其中fp为打开的文件指针。
fp=fopen(1.txt,w); //用 fopen 函数打开文件,第一个参数表示文件名,若不是当前
// 路径请加 \\ 号,如 C:\\Windows\\System32,w 表示写(write)
if (fp!=NULL) // 打开成功
fprintf(fp,%d,1);
// fp 文件流变量,%d写入格式,1 是写入的数据}
程序执行后,只要你有权限写文件,那么将会在当前目录产生 1.txt
用记事本打开,里面有一个 1
像这样调用程序:
aaa.exe 1.txt(重写)或
aaa.exe 1.txt(追加)
printf函数的主要功能是按一定的格式将数据显示在(输出到)屏幕上,将数据写入txt文档(此文档一定要存在)的较好方法是使用函数fput()或fputs(),前者是一次写入一个字符,后者是一次写入一个字符串。一般的写入过程是,先打开文件,然后操作文件,最后记住要关闭文件。主要代码如下:FILE *pf;
if((pf=fopen(你的txt文档名字,打开的模式))==NULL;//你的txt文档最好放在当前目录下,打开的模式有r(只读)、w(只写)、a(追加)等以及相应的组合。{
//打开失败,出错处理}else{
lseek(pf,nPos,SEEK_CUR);//将文件指针从当前位置移动到nPos处
char szTxt[128];
memset(szTxt,0,sizeof(szTxt));
printf(szTxt,%d,12345);
if((fputs(szTxt,pf))!=EOF){//完成写入}else{写入出错}}
fclose(pf);
打开stdio.h,你会发现……对,就是他:freopen函数,意为在原有FILE基础上打开一个标准文件。好了,我们就利用这样的便捷,把stdout这个程序启动时被设定的FILE map到一个标准文件,这样,printf()函数就立即输出到指定文件中。记住要用fclose关闭stdout。
FILE * __cdecl freopen(const char *, const char *, FILE *);
freopen就像fopen一样方便