繁体   English   中英

将 C output 重定向到 txt 文件

[英]Redirect C output to a txt file

我将程序 output 重定向到一个 txt 文件并输入主 function 提示的值: 终端捕获

我希望我的 output.txt 文件具有以下数据:

Enter float1: 2.4
Enter float1: 4.6

但相反,它有这个:

Enter float1: 
Enter float1: 

这是我的主要 function:

printf("Enter float1: ");
scanf("%f", &float1);
printf("Enter float2: ");
scanf("%f", &float2);

任何人都可以帮助重定向输入的值吗? 我研究了这个问题,但找不到任何可以解决问题的方法。 我尝试重定向 stderr 以查看是否在那里打印了值,但它给了我一个空文件。

您使用scanf()获得了这两个值,但您没有打印它们(例如使用printf() ),因此它们不会出现在stdout中。

当我们用键盘在标准输入上输入一些东西时,我们可以看到文本只是因为终端(不是你的程序)回显了这些字符。 因此,重定向程序的标准 output 不会改变任何东西。

用户输入是stdin ,但您仅将stdout重定向到文件。 因此,您将在output.txt中看到您的程序仅打印到stdout的内容。 如果要打印输入的值,则必须在scanf之后打印它们。

在下面的示例中,您还应该在output.txt中看到输入值

printf("Enter float1: ");
scanf("%f", &float1);
printf("%f\n", float1);

将您的主要更改为:

printf("Enter float1: ");
scanf("%f", &float1);
printf("%f\n", float1);
printf("Enter float2: ");
scanf("%f", &float2);
printf("%f\n", float2);

附带说明一下,如果您对重定向感到困惑, printffprintf的修改版本。 打印到控制台是如此普遍,有一个 function 。 printf("%f\n", float1)fprintf(stdout, "%f\n", float1) scanffscanf也是如此。 重定向 output 允许您将printf语句保留在代码中,但仍会打印到文件中。 否则,您将手动将它们全部更改为fprintf ,这会很痛苦。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM