-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 " 我试图读取这个文件:-使用 freopen("filename.txt",r,stdin); 然后我希望将写入的输出写入另一个文本文件,我可以在这个 codejam 练习题中上传给法官。

#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,所以我该怎么办。

4

2 回答 2

0

我弄错了,我把 freopen("cb.txt","w",stdout); 在循环内部,因此每次输出都会被覆盖,现在我将这条线放在循环之外并且它可以工作

于 2013-06-25T16:18:59.760 回答
0

您可能将控制台输入 ( scanf) 与文件输入 ( ) 混淆了fscanf

文件 I/O 的 C 风格函数有一个f前缀。
见: fprintf, fscanf, fgets, and fputs

于 2013-06-25T15:19:51.437 回答