程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> freopen函數的使用(從文件獲取標准輸入輸出流),freopen輸入輸出

freopen函數的使用(從文件獲取標准輸入輸出流),freopen輸入輸出

編輯:C++入門知識

freopen函數的使用(從文件獲取標准輸入輸出流),freopen輸入輸出


當我們求解acm題目時,通常在設計好算法和程序後,要在調試環境(例如VC等)中運行程序,輸入測試數據,當能得到正確運行結果後,才將程序提交到oj中。
但由於調試往往不能一次成功,每次運行時,都要重新輸入一遍測試數據,對於有大量輸入數據的題目,輸入數據需要花費大量時間。 使用freopen函數可以解決測試數據輸入問題,避免重復輸入,不失為一種簡單而有效的解決方法。 函數名:  freopen 聲明:   FILE *freopen( const char *path, const char *mode, FILE *stream ); 所在文件: stdio.h 參數說明: path:   文件名,用於存儲輸入輸出的自定義文件名。 mode:   文件打開的模式。和fopen中的模式(如r-只讀, w-寫)相同。 stream:  一個文件流,通常使用標准流文件。 返回值: 成功,則返回一個path所指定文件的指針;    失敗,返回NULL。(一般可以不使用它的返回值) 功能:  實現重定向,把預定義的標准流文件定向到由path指定的文件中。標准流文件具體是指stdin、stdout和stderr。其中stdin是標准輸入流,默認為鍵盤;stdout是標准輸出流,默認為屏幕;stderr是標准錯誤流,一般把屏幕設為默認。 下面以在VC下調試“計算a+b”的程序舉例。 C語法:
 1 #include <stdio.h> 
 2 int main() 
 3 { 
 4   int a,b; 
 5   freopen("debug\\in.txt","r",stdin); //輸入重定向,輸入數據將從in.txt文件中讀取 
 6   freopen("debug\\out.txt","w",stdout); //輸出重定向,輸出數據將保存在out.txt文件中 
 7   while(scanf("%d %d",&a,&b)!=EOF) 
 8   printf("%d\n",a+b); 
 9   fclose(stdin);//關閉文件 
10   fclose(stdout);//關閉文件 
11   return 0; 
12 } 

 

C++語法
#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文件中獲取輸入,調試時就方便多了。 
類似的,freopen("debug\\out.txt","w",stdout)的作用就是把stdout重定向到debug\\out.txt文件中,這樣不會輸出到控制台,輸出結果需要打開out.txt文件查看。 

        需要說明的是: 
        1. 在freopen("debug\\in.txt","r",stdin)中,文件默認目錄是在工程目錄下,可以直接訪問到debug目錄,將輸入文件in.txt放在文件夾debug中,文件夾debug是在VC中建立工程文件時自動生成的調試文件夾。
    如果改成freopen("in.txt","r",stdin),則in.txt文件將放在所建立的工程文件夾下。in.txt文件也可以放在其他的文件夾下,所在路徑寫正確即可。 2. 可以不使用輸出重定向,仍然在控制台查看輸出。 3. 程序調試成功後,提交到oj時不要忘記把與重定向有關的語句刪除。

轉自:http://blog.csdn.net/young0325/article/details/7190735

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved