尝试使用我的程序通过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,
等等
答案 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