关于`argv`并使用命令行打开文件

时间:2015-11-29 14:20:43

标签: c argv argc

我有这段代码:

#include <stdio.h>

int main ( int argc, char *argv[] )
{    
     FILE *file;
     int x;

     if ( argc != 2 )
           printf( "Use: %s file name", argv[0] );
     else {
            if ((file=fopen( argv[1], "r" ))== 0 ) 
            printf( “Couldn't open the file.\n" );
             else {
                          while (( x = fgetc( file ) ) != EOF)  printf( "%c", x );
                          fclose( file );
              }
      }
      return 0;
}

现在,有了这段代码,我如何从终端执行文件(即图片以及我的NetBeans配置)。 http://i.stack.imgur.com/6WRh3.png

1 个答案:

答案 0 :(得分:4)

首先,更好地替换你的陈述(在你上面的程序中)

printf( “Couldn't open the file.\n" );

perror(argv[1]);

然后,只需编译您的终端中的程序,例如键入一个类似于

的shell命令
gcc -Wall -g mysource.c -o myprog

(了解有关invoking GCC的更多信息:-Wall选项几乎要求所有警告并且非常有用 - 所以永远不要错过它 - 你甚至可以添加-Wextra以获取更多警告; -g要求DWARF可执行文件中的ELF调试信息,并允许您稍后使用gdb

假设您的源代码位于当前working directory中名为mysource.c的文件中(使用pwd命令查询当前目录,ls -al列出它,以及{ {1}}内置命令来改变它)

最后,运行您的程序

cd

您可能想要使用debugger。首先阅读GDB,然后尝试

./myprog sometestfile.txt

我猜您是在Linux 或其他一些符合POSIX标准的操作系统,并使用GCC编译器 < / p>

详细了解perror(3)command line interfaceshellsglobbingglob(7)PATH variable

稍后,你会想要在几个translation units中创建一些更大的程序,有一些共同的头文件(在所有这些文件中都是gdb ./myprog d)。然后你将使用像GNU make这样的构建器。你可以使用像emacs这样的好编辑器,像git那样的版本控制等等......

(您可能会发现NetBeans不是很有用,因为您可以通过 自己的集合工具获得更好的开发舒适度;可以自由地使用选择你的工具是值得的!)

PS。也许用更短更高效的#include ...

替换printf( "%c", x );