管道连接多个小程序
哈哈哈哈哈哈哈哈哈哈哈哈
实现两个程序拼凑
如何编写,并且使用管道。
我们现在写一个程序avg.c,求任意个数的平均值:
#include <stdio.h>
int main()
{
int s,n;
scanf("%d,%d",&s,&n);
float v=s/n;
printf("v=%f\n",v);
return 0;
}
退出vim进行编译cc avg.c -o avg.out,我们得到avg.out,我们输入3000,3。
我们再写一个统计输入的程序input.c:
#include <stdio.h>
int main()
{
int flag=1;
int i;
int count=0;
int s=0;
while(flag){
scanf("%d",&i);
if(0==i) break;
count++;
s+=i;
}
printf("%d,%d",s,count);
return 0;
}
我们对这个函数进行编译cc input.c -o input.out,我们输入3000 3000 0,输出总工资6000和人数2人
我们使用以上两个程序结合起来,将所有数据进行统计input.out,之后通过管道经过avg.out计算平均值,命令可以写为./input.out | ./avg.out,然后进行输入,输入完成我们便得到了对应的平均工资。 以上就是通过管道,将两个小程序连接起来得到更复杂的程序的过程
我们现在写一个程序avg.c,求任意个数的平均值:
#include <stdio.h>
int main()
{
int s,n;
scanf("%d,%d",&s,&n);
float v=s/n;
printf("v=%f\n",v);
return 0;
}
退出vim进行编译cc avg.c -o avg.out,我们得到avg.out,我们输入3000,3。
我们再写一个统计输入的程序input.c:
#include <stdio.h>
int main()
{
int flag=1;
int i;
int count=0;
int s=0;
while(flag){
scanf("%d",&i);
if(0==i) break;
count++;
s+=i;
}
printf("%d,%d",s,count);
return 0;
}
我们对这个函数进行编译cc input.c -o input.out,我们输入3000 3000 0,输出总工资6000和人数2人
我们使用以上两个程序结合起来,将所有数据进行统计input.out,之后通过管道经过avg.out计算平均值,命令可以写为./input.out | ./avg.out,然后进行输入,输入完成我们便得到了对应的平均工资。 以上就是通过管道,将两个小程序连接起来得到更复杂的程序的过程
管道符 |
./input | ./avg #将input的输出结果作为avg的输入
>> 输出重定向 < 输出重定向
./input.out | ./avg.out
重定向: 1.重定向到某个文件。用>>或>
2.作为其他程序输入流。使用管道 |
【编写使用管道的程序】
我们在文件夹下,c语言做的每个程序都有一个独立的功能,我们可以将多个小程序使用管道连接到一起。
例如input.c实现输入数字,输出总和与数量。avg.c实现输入总和与数量,输出平均值。可直接利用管道将其匹配
./input.out | ./avg.out