【问题标题】:C - Terminal Write and Output to a Text FileC - 终端写入和输出到文本文件
【发布时间】:2026-02-20 01:15:02
【问题描述】:

我是一名正在学习 C 入门课程的学生,我们的第一个 C 期中考试即将到来。我们的测试环境会将我们的操作和 printf 输出存储到一个文本文件中。但是,我们的 TA 建议我们自己使用 fprintf 写入文件以防万一。

有没有一种非常简单的方法可以将我的终端/控制台输出和输入(我在 scanf 之后输入的内容)复制到像 output.txt 这样的文本文件中?

我试过了

freopen("output.txt","w",stdout);

但这不会将我的 scanf 输入写入文本文件。

谁能帮忙?

【问题讨论】:

  • pFile = fopen ("output.txt","w"); 怎么样,然后做你的 fprintf?
  • 欢迎使用*,请提供minimal reproducible example。因为你的问题不清楚。
  • @bruceg 我会使用 pFile = fopen("output.txt","w") 但在我的中期必须同时执行 printf 和 fprintf 会很长而且有点混乱。我在问是否有像 freopen("output.txt","w",stdout); 这样的单行解决方案,但该代码的问题在于它没有写入我的 scanf 输入。我基本上只是想要一个将终端复制到文本文件中的代码。

标签: c file-io stdout fopen freopen


【解决方案1】:

不要使用 scanf(); 使用 fgets(); 一个例子:

#include <stdio.h>
#include <stdlib.h>

#define Contents_Size 1000

int main()
{
 char contents[Contents_Size];

 //Opening the file
 FILE * fp;
 fp = fopen("\myfile.txt", "w"); //"w" = write

 //If there is an error
 if(fp == NULL)
{
    //Exit
    printf("Error!\n");
    exit(EXIT_FAILURE);
}

//This part require your input
printf("Enter the contents of file: \n");
fgets(contents, Contents_Size, stdin);


//Write your input in file
fputs(contents, fp);

//Close the file
fclose(fp);

return 0;

}

fgest() 会将您的输入复制到 contents[] 中,而 fputs() 会将 content[] 的每个字符粘贴到您的文件中。

【讨论】: