Например, у меня есть следующая программа в windows.
#include <stdio.h>
int main(int argc, char *argv[]) {
char *input = argv[1];
printf("your input: %s", input);
return 0;
}
Когда я запускаю оболочку cmd и вызываю
C:\>whoami | main.exe
, я получаю в качестве вывода
your input: (null)
Первый аргумент argv[0]
(само имя файла) передается правильно. Как получить выходные данные whoami
в качестве входных данных для моей программы?
Редактировать : Поскольку люди в основном спрашивают код, если вы задаете вопрос, я также предоставлю код в своем ответе. Просто чтобы быть справедливым. Решение, которое я использую (спасибо Герардо Зинно), заключается в чтении со стандартного ввода, поэтому я использую scanf
.
char input[1024] = {0};
read(STDIN_FILENO, input, 1024);
input[strcspn(input, "\n")] = '\0';
printf("you wrote: %s", input);
return 0;