gpt4 book ai didi

c - 如何将另一个程序的输出作为管道传递到我的程序?

转载 作者:行者123 更新时间:2023-11-30 16:06:32 25 4
gpt4 key购买 nike

例如,我在 Windows 中有以下程序。

#include <stdio.h>

int main(int argc, char *argv[]) {
char *input = argv[1];
printf("your input: %s", input);
return 0;
}

当我运行 cmd shell 并调用时

C:\>whoami | main.exe

我得到输出

your input: (null)

第一个参数argv[0](文件名本身)已正确传递。如何接收 whoami 的输出作为我的程序的输入?

编辑:由于人们在提出问题时大多会要求提供代码,因此我也会在答案中提供代码。只是为了公平起见。我使用的解决方案(感谢 Gerardo Zinno)是从 stdin 读取 - 所以我使用 scanf

char input[1024] = {0};
read(STDIN_FILENO, input, 1024);
input[strcspn(input, "\n")] = '\0';
printf("you wrote: %s", input);
return 0;

最佳答案

您必须从 stdin 读取,就像输入来自用户在终端中键入一样。该管道会将 whoamistdout 发送(链接)到您程序的 stdin

有很多选项可以从标准输入中读取。您可以将 freadstdin 作为最后一个参数,scanffscanf(stdin,...) 一起使用。 ..

关于c - 如何将另一个程序的输出作为管道传递到我的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59922380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com