所以我试图在指定的程序中输入多个文件。我的输入文件代码如下:
int read_File(int *hp, int *d, int *s, char t[])
{
FILE *infile;
infile = fopen("input1.txt", "r");
if (!infile)
{
return 0;
}
else
{
fscanf(infile, "%d", hp);
fscanf(infile, "%d", d);
fscanf(infile, "%d", s);
fscanf(infile, "%s", t);
fclose(infile);
return 1;
}
我做了
$>gcc指定的程序.c-o nqt
$>nqt输入1.xt
但如果我想读取input2.txt,我必须在代码中从input1.txt更改为input2.txt。有没有绕过它并读取input2.txt,而不在代码中从input1.txt更改为input2.txt
就像我尝试的时候/nqt input1.text=>这很正常但是/nqt input2.txt它的分段错误:11
我尝试过:改变";input1.txt";在代码"to"中;nqt";但这是个愚蠢的想法
BTW:什么是/nqt
请帮帮我!
您必须将main()
写为下面的等效形式之一
int main(int argc, char **argv) { /*...*/ }
int main(int argc, char *argv[]) { /*...*/ }
以便CCD_ 2和CCD_
例如
$ ./nqt input.txt
^^^^^ ^^^^^^^^^ --> 1
\\-------------> 0
在您的程序中转换为
argc == 2
argv[0] ==> pointer to "./nqt"
argv[1] ==> pointer to "input.txt"
argv[2] ==> NULL
当涉及到nqt
时,它是您在编译时使用-o
标志指定的程序的名称:gcc assignedProgram.c -o nqt
。为了运行程序,您需要使用./
前缀,因此./nqt
的意思是";运行名为"nqt
"的程序;。
如果您想将文件名作为参数传递,您应该告诉main
函数接受命令行参数:int argc
和char* argv[]
(您可以在此处阅读(。然后,您将通过运行./nqt <filename>
传递的文件的名称将存储在argv[1]
中,您应该将其作为参数传递给read_File
函数。