我正在制作一个节目,这是我无法理解的。我有一个带参数的主函数:
int main(int argc, const char *argv[]){
FILE *file;
file=fopen(argv[1], "r");
if( file == NULL )
{
perror("Error while opening the file.\n");
exit(EXIT_FAILURE);
}
如何阅读argv[1]
文件。当我编译它时,错误显示为无效参数。如何打开文件以便打印隐藏的内容?我正在使用代码块。
答案 0 :(得分:3)
argv [1]引用用户在命令行上传递的第一个参数。 argv [0]指的是文件本身。所以在你的情况下,程序将打开作为第一个参数传递的文件。
./myprogram myfilename.txt
此外,你对程序本身有一些问题。
#include <stdio.h> /* Library needed for input/output*/
#include <stdlib.h> /* needed for the exit calls*/
int main(int argc, const char *argv[]){
FILE *file;
file=fopen(argv[1], "r");
if( file == NULL )
{
perror("Error while opening the file.\n");
exit(1);
}
return 0;
}
这显然现在没什么用,但它会让argv1打开。 另外,我将exit(EXIT_FAILURE)改为exit(1)。它们大多是同义词,但exit(1)不需要编译器标志(-std = c99)。 EXIT_FAILURE被认为更具可移植性 - EXIT_FAILURE vs exit(1)? - 但为了简单起见,我将其更改为退出(1)。