gpt4 book ai didi

C:程序要求用户输入,即使输入文件作为参数给出

转载 作者:太空宇宙 更新时间:2023-11-04 06:47:54 25 4
gpt4 key购买 nike

我的程序需要接受一个文件输入,如果没有给出,它需要将用户输入作为其输入。

当我像这样将输入文件输入程序时:

./sim < ex1_in

一切正常!

但是,当我将输入文件指定为文件参数时,如下所示:

./sim ex1_in

该程序改为查找用户输入。

这是处理输入和文件参数的代码部分:

int main(int argc, char * argv []) {    

if (argc > 3) {
fprintf (stderr, "Error: Too many arguments.\n");
return 1;
}

FILE *fp = argc > 1 ? fopen (argv[1], "r") : stdin;

if (!fp) { /* check file */
fprintf (stderr, "Error: File Open Failed '%s'.\n", argv[1]);
return 2;
}

//Initializing array of 256 unsigned chars
unsigned char binary[256];
int i = 0;
unsigned char c;
int count2 = 0;


//populate the 256 byte char array from stdin
while (count2 < SIZE) {
c=getchar();
binary[i] = c;
i++;
count2++;
}

到目前为止,我已将此 while 循环确定为问题区域,因为当我将其注释掉时,不需要的行为不会发生。但我不确定为什么会这样。

稍后在 main 方法中,文件被关闭:

if (fp != stdin) fclose (fp);   /* close file if not stdin */    

另一个相关的事情:

#define SIZE 256

最佳答案

getchar()stdin 读取,但您必须从 fp 完成所有输入。将 getchar() 更改为 getc(fp)

getchar() 基本上只是 getc(stdin) 的缩写。

另一种方法是将 stdin 连接到文件,而不是使用另一个变量。

if (argc > 1) {
freopen(argv[1], "r", stdin);
}

关于C:程序要求用户输入,即使输入文件作为参数给出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55618908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com