Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C windows将上一个程序的输出重用为其他程序的输入_C_Windows_Redirect_Pipe_Stdin - Fatal编程技术网

C windows将上一个程序的输出重用为其他程序的输入

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

我想这样做: 程序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", 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重定向将处理其余部分。