freopen函数的用法,C语言中 freopen(b.txt,r,stdin);是用来干嘛的啊?为什么有的地方是“r”,有的是“w”!!
freopen函数的用法,C语言中 freopen(b.txt,r,stdin);是用来干嘛的啊?为什么有的地方是“r”,有的是“w”!!详细介绍
本文目录一览: freopen函数的用法
用于指定新文件的访问方式。freopen函数,以指定模式重新指定到另一个文件。模式用于指定新文件的访问方式。头文件:stdio.hC89函数声明:C99函数声明:形参说明:filename:需要重定向到的文件名或文件路径。mode:代表文件访问权限的字符串。
C++中freopen函数应该怎么用呢?
freopen用于替换一个文件流指针,它会先关闭原来的,再将指针赋值为新的文件指针。
通常用于将标准输入输出该文读写文件。
比如想让所有的cin或scanf都是从文件文件读取的话,写:
freopen("~filename~","r",stdin)
如果想将原来输出到控制台的内容(用cout或printf等),写:
freopen("~filename~","w",stdout)
C语言中 freopen(b.txt,r,stdin);是用来干嘛的啊?为什么有的地方是“r”,有的是“w”!!
r:只读打开一个文本文件,只允许读数据
w:只写打开或建立一个文本文件,只允许写数据
a:追加打开一个文本文件,并在文件末尾写数据
t:以文本的方式打开文件
b:以二进制的方式打开文件
rt+:读写打开一个文本文件,允许读和写
wt+:读写打开或建立一个文本文件,允许读写
at+:读写打开一个文本文件,允许读,或在文件末追加数据
rb+:读写打开一个二进制文件,允许读和写
wb+:读写打开或建立一个二进制文件,允许读和写
ab+:读写打开一个二进制文件,允许读,或在文件末追加数据
r,w是打开文件的方式,r是read的意思,表示以只读的方式打开,这样打开是不能进行写操作的。
w是write的意思,表示以写的方式打开,可以修改文件的内容。
看看我上传的图片就知道啦。
函数名: freopen
功 能: 替换一个流,或者说重新分配文件指针,实现重定向。
用 法: FILE *freopen(char *filename, char *type, FILE *stream);
是文件流的东西
参数1:filename 为文件名,就是你要为stream该指针定义的新文件
参数2:*type为指针类型,最基本的有r只读(文件不存在则返回NULL),w只写(不存在则自动新建,存在会清空源文件),a追加(存在则会指向添加到源文件的最后面,不存在返回NULL).
参数3:则为文件指针,就是之前定义过的指针修改为新的指针用的。
freopen是什么意思??
函数名: freopen
功 能: 替换一个流,或者说重新分配文件指针,实现重定向。如果stream流已经打开,则先关闭该流。如果该流已经定向,则freopen将会清除该定向。此函数一般用于将一个指定的文件打开一个预定义的流:标准输入、标准输出或者标准出错。
用 法: FILE *freopen(const char *filename,const char *type, FILE *stream);
头文件:stdio.h
返回值:如果成功则返回该指向该stream的指针,否则为NULL。
例1:
#include
int main()
{
/* redirect standard output to a file */
if (freopen("D:OUTPUT.txt", "w", stdout)==NULL)
fprintf(stderr, "error redirecting stdout\n");
/* this output will go to a file */
printf("This will go into a file.");
/* close the standard output stream */
fclose(stdout);
return 0;
}
C语言文件操作函数freopen的用法
fopen()函数功能:打开一个文件。
原型:FILE * fopen(const char * path,const char * mode);
需要#include
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
一般打开文件会进行读取或写入操作,如果打开文件失败,也就无法顺利进行相应的读写操作,所以一般在调用fopen()之后要作错误判断及处理。
请教一下,怎么用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函数,格式如下:
FILE*
freopen(const
char*
filename,
const
char*
mode,
FILE*
stream);
如:
freopen("in.txt",
"r",
stdin);
则是将in.txt指定为标准输入。要恢复控制台输入,可用:
freopen("CON",
"r",
stdin);
同样,可用freopen函数指定标准输出。
fopen打开,知道文件内容格式的话使用fscanf读取文件内容作为输入,最后fclose关闭文件。
就这样!
freopen(con,r,stdin)什么意思
重定向了标准输入
本来标准输入是键盘
这句话改成从"con"文件输入了
会影响到后面的输入函数
函数名: freopen
功 能: 替换一个流
用 法: FILE *freopen(char *filename, char *type, FILE *stream);
程序例:
#include
int main(void)
{
/* redirect standard output to a file */
if (freopen("OUTPUT.FIL", "w", stdout)
== NULL)
fprintf(stderr, "error redirectingstdout\n");
/* this output will go to a file */
printf("This will go into a file.");
/* close the standard output stream */
fclose(stdout);
return 0;
}
===========================================================
上面不懂, 可以向下看, 没关系. 实践+理论 , 会慢慢在这详解.., 慢慢看.
下面重点:
在这再说一下. 不然很难理解, 我都没想到. 一直困惑不清啊....stdin stdout stderr.
现在懂了.
牢记: 目前主要的缓存特征是:stdin和stdout是行缓存;而stderr是无缓存的。
本文介绍如何将 stdout 时重定向到文件从某个 C 的程序,然后还原原始的 stdout 同一程序的某个更高位置。 C 函数通常用于重定向 stdout 或 stdin 是 freopen()。 要将 stdout 时重定向到文件名为 FILE.TXT 中,使用下面的调用:
freopen( "file.txt", "w", stdout ); //把内容写到这个文件"file.txt"
此语句使所有的后续输出,通常定向到转到文件 FILE.TXT stdout,向。
若要返回到显示默认 stdout) 的 stdout,使用下面的调用:
freopen( "CON", "w", stdout ); //输出到控制台"CON"
在这两种情况下检查 freopen() 以确保重定向实际发生的返回值。
下面是短程序演示了 stdout 时重定向:
运行代码
// Compile options needed: none
#include
#include
void main(void)
{
FILE *stream ;
//将内容写到file.txt, "W"是写 ("r"是读)
if((stream = freopen("file.txt", "w", stdout)) == NULL)
exit(-1);
printf("this is stdout output\n");
stream = freopen("CON", "w", stdout);stdout 是向程序的末尾的控制台重定向
printf("And now back to the console once again\n");
}
"CON" 是指控制台 就想DOS窗口.
==========================================
运行代码:
#include
#include
void main(void)
{
FILE *stream ;
char s[102400]="";
if((stream = freopen("file.txt", "r", stdin)) == NULL) //从文件读数据 (放到stdin , 其实stdin 也有自己的缓冲区.就向buf)
exit(-1);
fread(s, 1, 1024, stdin); //所以从标准输入里读出数据. 因为要注意stdin也是有自己的一块缓冲区.
printf("%s\n", s); //在这里打印读出来的数据.
}
c语言如何将printf产生的数据写到txt文件中
有以下三种方式可以做到:
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为打开的文件指针。
.h 里定义的
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一样方便
#include
#include
int main()
{
char money= 's';
char a ='w';
char b ='e';
char day='t';
FILE *fp = fopen("a.txt", "a+");//打开并在指定地点创建只写文件。
FILE *fp = fopen("路径","写入模式");
"w" => 创建并写入(覆盖式写入)
"a" => 创建并写入(接续式写入)
"a+" => 创建并写入(分行式写入)
fprintf(fp,"%c,%c,%c,%c,%c\n",money,a,b,b,day);//使用fprintf 将输出端口变更为 文档
fclose(fp);//关闭指定文件
return 0;
}
扩展资料
C语言printf()函数的使用
1、printf()函数是C语言标准I/O中最常用的控制台输出函数,除了最常见的%d,%c,%s和%f以外;printf()和%说明符还提供很多功能丰富的输出形式;
2、demo程序输出结果中,[ ]内表示的是编程时书写的常量的形式,=后是输出结果;
3、printf()中存在自动类型转换,如%f中对-3.14的输出,-3.14原本被系统认为是double浮点常量,但使用%f仍然是转换类型后,用float类型输出;
4、printf()中存在隐式的进制转换,如%o中对十进制常量80的输出,结果为八进制数0120,显示为120,对显示的八进制常量0123输出则得到123,说明%o的显示结果是隐式的八进制数。同理%x中,对十进制常量100输出为64,其实该64应该是0x64,而0x12输出也为12,这些输出结果都是隐藏了进制的。