【问题标题】:Cannot write the output to a text file in cpp program无法将输出写入 cpp 程序中的文本文件
【发布时间】:2013-06-25 15:13:05
【问题描述】:

我有这个输入文件“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,我该怎么办。

【问题讨论】:

  • 是的,一个加号可以改变一切。
  • 你的意思是 w+,对不起,我是文件处理新手
  • 使用 C++ I/O 代替 C 可能更容易。它的类型安全且易于阅读,而且文件流在完成后会自行关闭。
  • 转换为 C++I/O 后出现同样的错误
  • 你通过std::ios::app了吗?

标签: c++ file-handling


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-03-17
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多