`echo" asdf "` программе на C, использующей каналы - PullRequest
1 голос
/ 22 июля 2011

В основном я пытаюсь реализовать следующее:

echo "asdf" | ./a.out

, где ./a.out просто выводит "asdf"

Я знаю этоэто, вероятно, материал для noob C, но, поскольку я всего лишь начинающий программист на C, я решил спросить сообщество.


Обновление:

ОК, я понял:

#include <stdio.h>
#include <string.h>

int main(void)
{
  char str[80];
  int i;

  printf("Enter a string: ");
  fgets(str, 10, stdin);

  /* remove newline, if present */
  i = strlen(str)-1;
  if( str[ i ] == '\n') 
      str[i] = '\0';

  printf("This is your string: %s", str);

  return 0;
}

echo "asdf" | ./a.out делает то, что мне нужно.

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

Проходит через stdin.

$ cat stdin.c
#include <stdio.h>
int main () {
    int c;
    while (EOF != (c = fgetc (stdin)))
        putc (c, stdout);
}
$ gcc stdin.c
$ echo "foo" | ./a.out
foo
$
0 голосов
/ 23 июля 2011

Просто прочитайте из стандартного входного файла stdin, чтобы прочитать содержание.

...