首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

main函数行参的疑惑?解决方法

2012-03-08 
main函数行参的疑惑?#includestdio.h#includestdlib.h#includeconio.h#includestring.h/*文件加密

main函数行参的疑惑?
#include   <stdio.h>
#include   <stdlib.h>
#include   <conio.h>
#include   <string.h>


/*文件加密模块*/
int   dofile   (char   *in_fname,char   *pwd,char   *out_file)

{
      FILE   *fp1,*fp2;                     /*定义文件指针*/
      register   char   ch;                 /*寄存器变量ch*/
      int   j=0;
      int   j0=0;
      fp1=fopen(in_fname, "rb ");/*读取待加密文件*/
      if(fp1==NULL)                         /*判断文件是否读取成功*/
      {
            printf( "cannot   open   in-file.\n ");
            exit(1);                             /*如果不能打开要加密的文件,便退出程序*/
      }
      fp2=fopen(out_file, "wb ");/*创建新文件*/
      if(fp2==NULL)                         /*判断文件是否创建成功*/
      {
            printf( "cannot   open   or   create   out-file.\n ");
            exit(1);                             /*如果不能建立加密后的文件,便退出*/
      }
      while   (pwd[++j0]);
      ch=fgetc(fp1);

      /*加密算法开始*/
      while(!feof(fp1))
      {
            fputc(ch^pwd[j> =j0?j=0:j++],fp2);/*异或后写入fp2文件*/
            ch=fgetc(fp1);
      }
      fclose   (fp1);                                               /*关闭源文件*/
      fclose(fp2);                                                 /*关闭目标文件*/
      return   (0);
}


int   main   (int   argc,char   *argv[])/*定义main()函数的命令行参数*/

{
      char   in_fname[30];       /*存放源文件名数组*/
      char   out_fname[30];     /*存放目标文件名数组*/
      char   pwd[8];                   /*用来保存密码*/
      if   (argc!=4)
      {     /*容错处理*/
            printf( "\nIn-fname:\n ");
            gets(in_fname);                                 /*源文件名*/
            printf( "Password:\n ");
            gets(pwd);                                           /*给定密码*/


            printf( "Out-file:\n ");
            gets(out_fname);                               /*目标文件名*/
            dofile(in_fname,pwd,out_fname);/*进入加密子函数*/
      }
      else
      {     /*如果命令行参数正确,便直接运行程序*/
            strcpy(in_fname,argv[1]);
            strcpy(pwd,argv[2]);
            strcpy(out_fname,argv[3]);
            dofile(in_fname,pwd,out_fname);
      }
      getch   ();
      return   (0);
}
  

上面代码中,main函数的参数代表什么?main并没有被调用?

[解决办法]
要在命令行下输入:文件名 in_fname out_fname pwd
[解决办法]
main()函数及其参数
C++标准允许主函数main()有或没有参数列表。 您能在主函数main()中使用一个或更多的参数。 如下是一些惯例:
int main(int argc, char *argv[])
第一个参数argc,指明有多少个参数将被传递给主函数main(),真正的参数以字符串数组(即第2个参数argv[])的形式来传递。每一个字符串均有自己意思。在这句法上面, 记住, argc代表参数的数量, main()函数本身是在索引0为的第一参数。 所以, argc总是至少为1 。它的总数是从argv列阵的元素数目。 这意味着, argv[0]的值是至关重要的。 如果用户在控制台环境中程序名称后键入含参数的指令, 那么随后的参数将传递给argv[1] 。
[解决办法]
main函数的参数分别代表in_fname,pwd,out_fname

你可以在命令行上这样调用 **.exe infile anonymous outfile

如果直接调用:**.exe
屏幕上提示输入这几个参数
In-fname:
Password:
Out-file:

[解决办法]
写了一遍居然丢掉了。
main函数是程序的入口,所有编译好的程序执行,都从main开始。
main的参数有两个。
int argc表示main函数的参数的个数,包括程序名称。
char *argv[]表示参数的字符串数组。
例如;你把程序编译为run.exe,在命令行执行:run.exe a b c
则argc为4,
argv为{ "run.exe ", "a ", "b ", "c "}
可以在程序中输出argc和argv看看。

热点排行