FILE *freopen(const char *filename, const char *mode, FILE *stream)
优质
小牛编辑
131浏览
2023-12-01
描述 (Description)
C库函数FILE *freopen(const char *filename, const char *mode, FILE *stream)将新filename与给定的打开流相关联,同时关闭流中的旧文件。
声明 (Declaration)
以下是freopen()函数的声明。
FILE *freopen(const char *filename, const char *mode, FILE *stream)
参数 (Parameters)
filename - 这是包含要打开的文件名的C字符串。
mode - 这是包含文件访问模式的C字符串。 它包括 -
Sr.No. | 模式和说明 |
---|---|
1 | "r" 打开文件进行阅读。 该文件必须存在。 |
2 | "w" 创建一个用于写入的空文件。 如果已存在具有相同名称的文件,则其内容将被删除,并且该文件将被视为新的空文件。 |
3 | "a" 附加到文件。 写操作会在文件末尾附加数据。 如果文件不存在,则创建该文件。 |
4 | "r+" 打开文件以更新读取和写入。 该文件必须存在。 |
5 | "w+" 为读取和写入创建一个空文件。 |
6 | "a+" 打开文件以进行阅读和追加。 |
stream - 这是指向FILE对象的指针,该对象标识要重新打开的流。
返回值 (Return Value)
如果文件成功重新打开,则该函数返回指向标识流的对象的指针,否则返回空指针。
例子 (Example)
以下示例显示了freopen()函数的用法。
#include <stdio.h>
int main () {
FILE *fp;
printf("This text is redirected to stdout\n");
fp = freopen("file.txt", "w+", stdout);
printf("This text is redirected to file.txt\n");
fclose(fp);
return(0);
}
让我们编译并运行上面的程序,它将在STDOUT发送以下行,因为最初我们没有打开stdout -
This text is redirected to stdout
在调用freopen() ,它将STDOUT与文件file.txt相关联,所以无论我们在STDOUT中写入什么内容都在file.txt 。 因此,文件file.txt将具有以下内容。
This text is redirected to file.txt
现在让我们使用以下程序查看上述文件的内容 -
#include <stdio.h>
int main () {
FILE *fp;
int c;
fp = fopen("file.txt","r");
while(1) {
c = fgetc(fp);
if( feof(fp) ) {
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}