zoukankan      html  css  js  c++  java
  • C library function

    Description

    The C library function FILE *freopen(const char *filename, const char *mode, FILE *stream) associates a new filename with the given open stream and at the same time closes the old file in the stream.

    Declaration

    Following is the declaration for freopen() function.

    FILE *freopen(const char *filename, const char *mode, FILE *stream)

    Parameters

    • filename − This is the C string containing the name of the file to be opened.

    • mode − This is the C string containing a file access mode. It includes −

    modeDescription
    "r" Opens a file for reading. The file must exist.
    "w" Creates an empty file for writing. If a file with the same name already exists then its content is erased and the file is considered as a new empty file.
    "a" Appends to a file. Writing operations appends data at the end of the file. The file is created if it does not exist.
    "r+" Opens a file to update both reading and writing. The file must exist.
    "w+" Creates an empty file for both reading and writing.
    "a+" Opens a file for reading and appending.
    • stream − This is the pointer to a FILE object that identifies the stream to be re-opened.

    Return Value

    If the file was re-opened successfully, the function returns a pointer to an object identifying the stream or else, null pointer is returned.

    Example

    The following example shows the usage of freopen() function.

    #include <stdio.h>
    
    int main ()
    {
       FILE *fp;
    
       printf("This text is redirected to stdout
    ");
    
       fp = freopen("file.txt", "w+", stdout);
    
       printf("This text is redirected to file.txt
    ");
    
       fclose(fp);
       
       return(0);
    }

    Let us compile and run the above program that will send the following line at STDOUT because initially we did not open stdout −

    This text is redirected to stdout
    

    After a call to freopen(), it associates STDOUT to file file.txt, so whatever we write at STDOUT that goes inside file.txt. So, the file file.txt will have the following content.

    This text is redirected to file.txt
    

    Now let's see the content of the above file using the following program −

    #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);
    }
  • 相关阅读:
    sql行列互换
    转: 在hibernate中查询使用list,map定制返回类型
    拦截器和过滤器的区
    hibernate 实体对象的三种状态以及转换关系。
    如何理解Hibernate的延迟加载机制?在实际应用中,延迟加载与Session关闭的矛盾是如何处理的?
    Hibernate常见优化策略
    Hibernate的一级缓存、二级缓存和查询缓存。
    关于java Collections.sort 排序
    常用颜色,正则表达式工具
    java正则表达式
  • 原文地址:https://www.cnblogs.com/zhonghuasong/p/5008322.html
Copyright © 2011-2022 走看看