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

命令行参数怎么理解

2012-04-23 
命令行参数如何理解?C/C++ code/* count.c -- using standard I/O *//*命令行参数 */#include stdio.h#i

命令行参数如何理解?

C/C++ code
/* count.c -- using standard I/O *//*            命令行参数 */#include <stdio.h>#include <stdlib.h> // ANSI C exit() prototypeint main(int argc, char *argv[]){    int ch;         // place to store each character as read                    // 读取时存储每个字符的位置    FILE *fp;       // "file pointer"                     // 文件指针    long count = 0;    if (argc != 2)    {        printf("Usage: %s filename\n", argv[0]);        exit(1);    }    if ((fp = fopen(argv[1], "r")) == NULL)    {        printf("Can't open %s\n", argv[1]);        exit(1);    }    while ((ch = getc(fp)) != EOF)    {        putc(ch,stdout);  // same as putchar(ch)        count++;    }    fclose(fp);    printf("File %s has %ld characters\n", argv[1], count);    return 0;}

执行程序:

各位可不可以帮我全程分析一下,每人看几行就可以
我看了几天没搞懂

[解决办法]
不过为了分数,简单写写吧

/* count.c -- using standard I/O */
/* 命令行参数 */
#include <stdio.h>

#include <stdlib.h> // ANSI C exit() prototype
int main(int argc, char *argv[])
{
int ch; // place to store each character as read
// 读取时存储每个字符的位置
FILE *fp; // "file pointer" 
// 文件指针
long count = 0; //用来统计你指定的文件中有多少字符

if (argc != 2) //检查你是不是后面带了参数,为啥是2呢,第一个是你自己的文件名
{
printf("Usage: %s filename\n", argv[0]);//如果不是带了参数就打印一个用法提示
exit(1);//退出
}
if ((fp = fopen(argv[1], "r")) == NULL)//然后打开你指定的那个文件
{
printf("Can't open %s\n", argv[1]);//如果文件不能打开就说不能打开
exit(1);
}
while ((ch = getc(fp)) != EOF)//然后不断取里面的字符,一直到文件结尾
{
putc(ch,stdout); // same as putchar(ch)//输出到标准输出设备上,应该是屏幕上吧
count++;//输出一个字符,统计数就加1
}
fclose(fp);//文件关闭
printf("File %s has %ld characters\n", argv[1], count);//打印一下一共从你指定的文件中读取到多少字符

return 0;//返回
}


[解决办法]
这个貌似Unix环境高级编程里面的。main(int argc, char *argv[])。
argc表示参数个数,argv[argc]存储的是每个参数的地址
[解决办法]
for (int i=0;i<argc;i++) printf("%d [%s]\n",i,argv[i]);
[解决办法]
//数组大小为argc+1: argv[0]为路径和文件名,argv[1]~argv[argc-1]为参数指针且argv[argc]=NULL
 main(int argc,char **argv)
 {
printf("%d个参数: ",argc);
while(argc-->1)
printf("%s ",*++argv);
 }
声明方式可以有不同
[解决办法]
C/C++ code
int main(int argc, char *argv[]){} 

热点排行