所以我写了这个小程序,我是新手。它打印出我给它的命令行参数。我只是不明白为什么在我将 i 变量初始化为一个之前它会起作用,但是当我改变它时,我得到了一个分段错误。
编码:
#include<stdio.h>
int main ( int argc, char *argv[] )
{
if ( argc > 1) {
printf( "Filename: %s has %d arguments.", argv[0], argc );
} else {
printf ("No arguments found!");
getchar();
return 0;
}
int i = 1;
printf( "The arguments are: \n" );
for ( i < argc; ++i;) {
printf( "Argument %d is: %s \n", i, argv[i] );
}
getchar();
return 0;
}
我从来没有见过任何说明命令行参数一旦使用就会发生什么的事情。然而,我的假设是在我对它们使用 printf() 之后,命令行参数发生了一些事情。当计数器变量 i 初始化为零时,它第一次起作用。当我通过将 i 初始化为 1 来重组程序以跳过零 eth 时,参数给了我该分段错误。我这样做是因为我对正在发生的事情有点困惑。它没有像我想象的那样第二次打印出文件名,但我改变了它,所以无论如何它都不会(很有意义吧?不是回想起来哈哈)。