用另一个程序写入scanf

时间:2014-04-13 00:33:47

标签: linux shell

我有一个程序,通过scanf从标准输入流stdin读取并打印到stdout。我想通过另一个程序发送输入。我该如何解决这个问题?

类似的东西:

echo hi | ./prog 

但目前的工作并不像预期的那样。 prog目前看起来像

#include <stdio.h>

int main()
{
char buf[200];
scanf("%s",buf);
printf("%s",buf);
}

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

由于%s忽略前导空格并在第一个后续空格处停止,因此您可能希望在打印中包含换行符:

#include <stdio.h>

int main(void)
{
    char buf[200];
    scanf("%199s", buf);
    printf("%s\n",buf);
    return 0;
}

这将读取一个单词&#39;标准输入最多199个字符,并将其写入标准输出。

答案 1 :(得分:2)

该计划为我工作.....

$ cat >prog.c
#inlcude <stdio.h>
int main()
{
  char buf[200];
  scanf("%s",buf);
  printf("%s",buf);
}
$ make prog
cc     prog.c   -o prog
$ echo hi | ./prog 
hi