C windows将上一个程序的输出重用为其他程序的输入
我想这样做: 程序1 |程序2 我想用第一个程序的输出作为程序2的输入(stdin)来做一些计算 现在,这就是我在程序2中的内容C windows将上一个程序的输出重用为其他程序的输入,c,windows,redirect,pipe,stdin,C,Windows,Redirect,Pipe,Stdin,我想这样做: 程序1 |程序2 我想用第一个程序的输出作为程序2的输入(stdin)来做一些计算 现在,这就是我在程序2中的内容 int main(int argc, char *argv[]) { char userInput[100]; int num[100]; FILE *cmdLn = stdin; if (argc > 2) { fprintf(stderr, "Usage: %s [<file>]\n", ar
int main(int argc, char *argv[]) {
char userInput[100];
int num[100];
FILE *cmdLn = stdin;
if (argc > 2) {
fprintf(stderr, "Usage: %s [<file>]\n", argv[0]);
exit(EXIT_FAILURE);
}
if (argc == 2) {
cmdLn = fopen(argv[1], "r");
if (!cmdLn) {
perror(argv[0]);
exit(EXIT_FAILURE);
}
}
int numInput[100];
for (int i = 0; i < 100; i++) {
fscanf(cmdLn, "%d", &numInput[i]);
printf("%d\n", 2*numInput[i]);
}
if (cmdLn != stdin) {
fclose(cmdLn);
}
exit(EXIT_SUCCESS);
}
intmain(intargc,char*argv[]){
字符用户输入[100];
int num[100];
文件*cmdLn=stdin;
如果(argc>2){
fprintf(stderr,“用法:%s[]\n”,argv[0]);
退出(退出失败);
}
如果(argc==2){
cmdLn=fopen(argv[1],“r”);
如果(!cmdLn){
perror(argv[0]);
退出(退出失败);
}
}
int numInput[100];
对于(int i=0;i<100;i++){
fscanf(cmdLn、%d、&numInput[i]);
printf(“%d\n”,2*numInput[i]);
}
if(cmdLn!=stdin){
fclose(cmdLn);
}
退出(退出成功);
}
程序1每行只创建几个数字。我想在程序2中使用这些数字将它们加倍并打印结果
我在这里遗漏了什么?我正在用fgets from*文件读取,该文件正在从stdin获取输入
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
char userInput[100];
int numInput[100];
FILE *file = stdin;
if (argc > 2) {
fprintf(stderr, "Usage: %s [<file>]\n", argv[0]);
exit(EXIT_FAILURE);
}
if (argc == 2) {
file = fopen(argv[1], "r");
if (!file) {
perror(argv[0]);
exit(EXIT_FAILURE);
}
}
int num[100];
while (fgets(userInput, sizeof(userInput), file))
{
num[i] = atoi(userInput);
printf("%d\n", 2*num[i]);
i++;
}
if (file != stdin) {
fclose(file);
}
exit(EXIT_SUCCESS);
}
#包括
#包括
int main(int argc,char*argv[]){
字符用户输入[100];
int numInput[100];
FILE*FILE=stdin;
如果(argc>2){
fprintf(stderr,“用法:%s[]\n”,argv[0]);
退出(退出失败);
}
如果(argc==2){
file=fopen(argv[1],“r”);
如果(!文件){
perror(argv[0]);
退出(退出失败);
}
}
int num[100];
while(fgets(userInput,sizeof(userInput),file))
{
num[i]=atoi(用户输入);
printf(“%d\n”,2*num[i]);
i++;
}
如果(文件!=stdin){
fclose(文件);
}
退出(退出成功);
}
shell重定向可以工作,但不是我想要的方式。
程序1给我10个随机整数。
当我从程序1得到10个不同的数字并将其输出传输到程序2时,我得到了新的10个随机值,而不是之前程序1的输出。
程序2应计算这些值(例如乘以2)
可能问题在于程序1:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXNUM 1000
int main(int argc,char *argv[]) {
char *userInput[10];
time_t t;
int num = atoi(argv[1]);
srand(time(NULL));
for (int i = 0; i <= num; i++) {
printf("%d\n", rand() % MAXNUM);
}
return 0;
}
#包括
#包括
#包括
#定义MAXNUM 1000
int main(int argc,char*argv[]){
char*userInput[10];
时间;
int num=atoi(argv[1]);
srand(时间(空));
对于(int i=0;i我想我已经修好了!是啊!
导致此问题的是srand()。取消注释解决了此问题。您的程序只需以与从控制台读取相同的方式从stdin
读取即可。shell重定向将处理其余部分。