16 - 10 - 30 命令行参数 ----------《c语言程序设计》
2016-10-30 16:52
387 查看
启动一个程序的基本方式是在操作系统 命令状态下
由键盘输入一个命令,操作系统根据 命令名 去查找相对应的程序代码文件。把它装入内存并命令它开始执行。
命令行 就是为了启动程序 而在 操作系统状态下输入的 表示命令的 字符行。虽然当前主流操作系统是应用图形化界面较多,但是 实际的命令依然存在于图标或菜单的定义中。
ex :用系统的编辑器 编辑一个文件,可能输入以下命令:
edit file1.txt
文件名 lile1.txt 就是命令的附加信息。
命令行中的这些附加信息以 字符序列 的形式出现。即:命令行参数。比如在常见的系统中,若源程序文件名是 abcd.c,那么经过编译链接后一般会产生abcd.exe 的可执行程序文件。在命令状态下输入命令,这个程序就会装入执行。
abc
C语言如何看待命令行?
c把命令行当中的字符看作是由空格分隔的 若干个字符串。每个字符串是一个命令行参数,第一个字符串作为命令名,也是编号为0的参数,以此类推。
在程序中可以按规定方式使用这些字符串,以接受和处理各个命令行参数。
(返回类型) main(int argc,char*argv[] )
人们常用int argc,char*argv[]作为main函数的两个参数的名字,但是 大家知道这两个参数完全可以用其他任何的名字。但他们的类型是确定的,只要在定义main函数时,写出上面这样类型正确的 函数原型,就能保证在程序启动时 能够正确得到有关命令行参数的有关信息。
当一个用C编写的程序被装入内存准备执行时,
main函数的两个参数就会被 自动 给定初值 。
–argc 的值是 启动命令行 中的 命令行参数的个数;
–argv是一个字符型指针数组,这个数组里 共有 argc+1 个字符型指针变量。其中的前argc个 存储 各字符串首地址,最后一个是空指针,表示数组结束。
设这个程序的原文件名是 echo.c 编译后的 可执行文件 是echo.exe,执行 下面命令:
echo programming is understanding
将会产生如下输出信息:
echo
programming
is
understanding
(其实我用 dev并没有得到这个结果,或许是哪里的打开方式不对)
【捂脸哭】
由键盘输入一个命令,操作系统根据 命令名 去查找相对应的程序代码文件。把它装入内存并命令它开始执行。
命令行 就是为了启动程序 而在 操作系统状态下输入的 表示命令的 字符行。虽然当前主流操作系统是应用图形化界面较多,但是 实际的命令依然存在于图标或菜单的定义中。
ex :用系统的编辑器 编辑一个文件,可能输入以下命令:
edit file1.txt
文件名 lile1.txt 就是命令的附加信息。
命令行中的这些附加信息以 字符序列 的形式出现。即:命令行参数。比如在常见的系统中,若源程序文件名是 abcd.c,那么经过编译链接后一般会产生abcd.exe 的可执行程序文件。在命令状态下输入命令,这个程序就会装入执行。
abc
C语言如何看待命令行?
c把命令行当中的字符看作是由空格分隔的 若干个字符串。每个字符串是一个命令行参数,第一个字符串作为命令名,也是编号为0的参数,以此类推。
在程序中可以按规定方式使用这些字符串,以接受和处理各个命令行参数。
(返回类型) main(int argc,char*argv[] )
人们常用int argc,char*argv[]作为main函数的两个参数的名字,但是 大家知道这两个参数完全可以用其他任何的名字。但他们的类型是确定的,只要在定义main函数时,写出上面这样类型正确的 函数原型,就能保证在程序启动时 能够正确得到有关命令行参数的有关信息。
当一个用C编写的程序被装入内存准备执行时,
main函数的两个参数就会被 自动 给定初值 。
–argc 的值是 启动命令行 中的 命令行参数的个数;
–argv是一个字符型指针数组,这个数组里 共有 argc+1 个字符型指针变量。其中的前argc个 存储 各字符串首地址,最后一个是空指针,表示数组结束。
#include<stdio.h> int main(int argc,char*argv[]) { int i; for(i = 0;i<argc;i++) printf("%s\n",argv[i]); return 0; } //或是由于argv 是一个指针数组,利用他的最后一个数组元素中事实 //可以写出下面的这片代码: #include<stdio.h> int main(int argc,char*argv[]) { while(*argv!= NULL) printf("%s\n",*argv++); return 0; } //argv++是合法的,argv作为数组名称,是函数参数 //他不是常量,是变量。
设这个程序的原文件名是 echo.c 编译后的 可执行文件 是echo.exe,执行 下面命令:
echo programming is understanding
将会产生如下输出信息:
echo
programming
is
understanding
(其实我用 dev并没有得到这个结果,或许是哪里的打开方式不对)
【捂脸哭】
版权来源/书籍资料 -------《c语言程序设计》 顾沈明主编--清华大学出版社
相关文章推荐
- ffmpeg-20161104[07,10,16,21,22,27,30]-bin.7z
- 用python实现计算1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))类似的公式计算
- 启动3个线程,线程1打印1到5,线程2打印5到10,线程3打印11到15,然后线程1打印16到20,以此类推。。。打印到30为止
- 例题10-16 过河 UVa12230
- UVa 246 - 10-20-30 [STL应用]
- 练习1.求1到10、20到30、35到45的三个和
- 1到10,20到30,35到45的和
- 16 多校 6 - J - Windows 10 (HDU - 5802)
- 求出1到10、20到30和35到45的三个和
- 深圳杂记 10-16-2009
- UVa 246 10-20-30
- UVA 246 - 10-20-30 (模拟+STL)
- 【习题 6-10 UVA - 246】10-20-30
- 16 - 10 - 23 字符串输入(fputs()函数)溢出的原理
- Notes of the scrum meeting(10/30)
- 16 进制转换为 10进制
- 10-02-16 聚会
- 2012/12/(10-16) 学习技术资料整理
- 按weskercn的思路写的程序,问题(2)解答:把键盘输入的16,10,8进制数转换为2进制输出
- 本周ASP.NET英文技术文章推荐[06/10 - 06/16]