2013-06-25 92 views
-1

我有這個輸入文件「https://code.google.com/codejam/contest/351101/dashboard/do/A-large-practice.in?cmd=GetInputFile&problem=374101&input_id=1&filename=A-large-practice.in&redownload_last=1&agent=website&csrfmiddlewaretoken=OWMxNTVmMTUyODBiYjhhN2Q2OTM3ZGJiMTNhNDkwMDF8fDEzNzIxNzI1NTE3ODAzMjA%3D」 我試圖讀取此文件:-using freopen(「filename.txt」,r,stdin);然後我想把輸出寫入另一個文本文件,我可以在這個codejam練習問題上傳給法官。無法將輸出寫入cpp程序中的文本文件

#include<iostream> 
    #include<cstdio> 
    using namespace std; 
    int main() 
    { 
    int t,k=0,a[2000]; 
    freopen("ab.txt","r",stdin); 

    scanf("%d",&t); 

    while(t--) 
    { 
     freopen("cb.txt","w",stdout); 

     int c; 

     scanf("%d",&c); 
     int n; 
     scanf("%d",&n); 
     for(int i=0;i<n;i++) 
     scanf("%d",&a[i]); 

     printf("Case #%d: ",++k); 
     for(int i=0;i<n-1;i++) 
     {for(int j=i+1;j<n;j++) 
      if((a[i]+a[j])==c) 
      {printf("%d %d\n",i+1,j+1); 
      i=n;} 
      } 

    } 
    return 0; 
    } 

這是我的代碼。 現在的問題是輸出文件cb.txt只包含輸入的最後一行。我希望將整個輸出寫入cb.txt,那我該怎麼做。

+0

是的,一個加號可以使所有區別。 – chris

+0

你的意思是w +,對不起,我是新來的文件處理 – swapedoc

+1

它可能會更容易使用C++ I/O而不是C。它的類型安全且易於閱讀,並且你可以獲得在完成時關閉自己的文件流。 – chris

回答

0

您可能將控制檯輸入(scanf)與文件輸入(fscanf)混淆。

文件I/O的C風格函數有一個前綴f前綴。
參見:fprintf, fscanf, fgets, and fputs

+0

'freopen'重定向它。 – chris

0

我弄錯了,我把freopen(「cb.txt」,「w」,stdout);在循環內部,所以輸出每次都被覆蓋,現在我把這條線放在循環外面,它可以工作