从控制台打印到文件

发布于 2024-11-01 09:48:00 字数 190 浏览 3 评论 0原文

我正在 Linux 上用 C 语言编写一个程序,但无法使用 fprintf 打印到文件。我可以使用 printf 在控制台中打印。如何获取控制台输出并将其写入文件。

我尝试了 printf("echowhatever>>file.txt"); 但我怀疑它没有运行。

谢谢

I am writing a program on Linux in C where I cannot use fprintf to print to a file. I can use printf to print in the console though. How can I take the console output and write it to a file.

I tried printf("echo whatever >> file.txt"); but as I suspected it doesn't run.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

想念有你 2024-11-08 09:48:00

运行程序时,附加> file.txt 到它应该可以工作。

<代码>./程序> file.txt

IIRC,将 STDOUT 重新路由到文件。

When running the program, append > file.txt to it should work.

./program > file.txt

IIRC, re-routes the STDOUT to the file.

作死小能手 2024-11-08 09:48:00

您正在尝试让程序输出一些文本,并让 shell 将输出评估为命令。

这是不寻常的,通常会将生成文本的职责分离给程序,然后让 shell 将该输出重定向到一个文件:

foo.c contains:

...
printf("whatever");
...

然后运行您的程序并将标准输出重定向到您喜欢的任何位置:

$a.out >> file.txt

You're trying to get your program to output some text and for the shell evaluate the output as a command.

This is unusual, one would normally separate the responsibilities of generating the text to the program, then let the shell redirect that output to a file:

foo.c contains:

...
printf("whatever");
...

Then run your program and redirect standard output to wherever you like:

$a.out >> file.txt
灼疼热情 2024-11-08 09:48:00

像这样编译并运行你的程序

./program > lala.txt

这会将你所有的printf()“推送”到lala.txt

Compile and run your program like that

./program > lala.txt

This will "push" all your printf()'s to lala.txt

失而复得 2024-11-08 09:48:00

您可以按如下方式 freopendup2

#include <unistd.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
    int f = open("test.txt", O_CREAT|O_RDWR, 0666);
    dup2(f, 1);
    printf("Hello world\n");
    printf("test\n");
    close(f);
    return 0;
}

You can freopen or dup2 as follows:

#include <unistd.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
    int f = open("test.txt", O_CREAT|O_RDWR, 0666);
    dup2(f, 1);
    printf("Hello world\n");
    printf("test\n");
    close(f);
    return 0;
}
別甾虛僞 2024-11-08 09:48:00

您可以 freopen stdout 流。

#include <stdio.h>

int main(void) {
  if (freopen("5688371.txt", "a", stdout) == NULL) {
    /* error */
  }
  printf("Hello, world!\n");
  return 0;
}

You can freopen the stdout stream.

#include <stdio.h>

int main(void) {
  if (freopen("5688371.txt", "a", stdout) == NULL) {
    /* error */
  }
  printf("Hello, world!\n");
  return 0;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文