如何通过cmd将文本文件输入到exe中?

时间:2016-01-25 06:31:11

标签: c

尝试使用我的程序通过stdin获取cmd

例如,我有一个程序,使用scanf从用户输入中获取一个数字。

如何使用控制台重定向输入。

我已经尝试了program.exe < input.txt,但是我收到了一个错误,指出找不到指定的文件。

当我运行exe并输入<input.txt时,它会输出我认为是内存地址的一行。

编辑: 计算出输入,但得到意外的输出。

 #define SIZE 5
    int main(){

    int i,j,num, row[SIZE];
    char line[SIZE+1];


    scanf("%d", &num);
    printf("%d", num);

    for(i=0;i<num;i++){

        scanf("%s", line);

        for (i=0; i<SIZE; i++)

             arr[i] = line[i] - '0';

        printf("%d",arr);

它的意图是将许多行带入变量num。

从那里,它应该可以包含所有行并获取一串数字,然后将该数字字符串放入int数组中。

E.g。输入

1
28374

e.g。输出

28374

哪个应该是

  

ARR [0] = 2,    ARR [1] = 8,    ARR [2] = 3,
  等等

2 个答案:

答案 0 :(得分:2)

1)使用命令行参数将文件名传递给c程序。研究这个http://www.tutorialspoint.com/cprogramming/c_command_line_arguments.htm

2) 然后在你的c程序中打开该文件并读取输入。

答案 1 :(得分:0)

它是这样的:

#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define BUFFER_SIZE 256

int main ()
{
    int16_t i;                                                                                                                                                         
    char buffer[BUFFER_SIZE];

    while (NULL != fgets(buffer, sizeof(buffer), stdin)) {
        sscanf(buffer, "%[^\n]", buffer);

        uint8_t len = strlen(buffer);
        uint8_t numbers[BUFFER_SIZE] = {0};

        for (i = 0; i < len; i++) {
            numbers[len - 1 - i] = buffer[i] - '0';
        }

        bool high = false;
        for (i = BUFFER_SIZE - 1; i >= 0; i--) {
            high = high || (0 != numbers[i]);

            if (high) {
                printf("[%d] => %d\t", i, numbers[i]);
            }
        }

        putchar('\n');
    }   

    return EXIT_SUCCESS;
}

输入内容numbers.txt

54673
1245841
326987

然后你可以像这样运行你的程序:

./app < numbers.txt