Обычно ответом может быть «это зависит», но если программа выглядит примерно так:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char s1[100], s2[100];
printf("Enter string1:");
fflush(stdout);
fgets(s1, sizeof(s1), stdin);
printf("Enter string2:");
fflush(stdout);
fgets(s2, sizeof(s2), stdin);
printf("string1: '%s', string2: '%s'\n", s1, s2);
exit(1);
}
Затем вы можете передать входные данные, используя синтаксис «документ здесь»:
$ ./a.out <<_END_
> string1
> string2
> _END_
Enter string1:Enter string2:string1: 'string1
', string2: 'string2
'
Этот синтаксис стал чем-то большим, чем просто оболочка - это также удобная конструкция в Perl и Ruby.