在第一章中讲过main()函数的参数,但没有讲怎么使用。argc(即argument Count)和argv(argument vector)是main()函数特有的参数,“argc”不用传入,是系统自动计算参数的个数放入这个参数中,不过,exe程序名自身也处一个,也就是说,一个参数也没有的情况,argc应该等于1。小雅曾试着用于普通函数,但都没有自动计数的特殊功能。
#include
<stdio.h>int
main(int
argc,char
**argv) {int
i; printf("argc = [%d]\n", argc);for
(i=0; i<argc; i++) { printf("%s\n", argv[i]); }return
0; }
上例中“this is quanxue”本来想作为一个字符串输出,结果却变成3个,连同test.exe共4个了。解决带有空格的字符串是用双引号,例如要带参数“小雅”和“this is quanxue”。
在Unix中单引号、双引号都可以,也可以不用引号,空格使用转义字符“\ ”。
在第一章介绍main()函数时,省略了第三种定义,并非小雅当时还不知道,而是认为实在没有必要,因为标准函数库里面已经有了getenv()函数,简单方便地取任何环境变量的值,也许这第三种定义还有小雅不知道的好处吧。至于getenv()函数这儿不讲,以后在标准函数库中讲解。
#include
<stdio.h>int
main(int
argc,char
**argv,char
**envp ) {int
i; //显示前5个环境变量for
(i=0; i<5; i++) { printf("%s\n", envp[i]); }return
0; }
对于从屏幕中要输入的内容,可以事先输入在文本文件中,运行程序时用“<”将文件导入。注意,从屏幕中直接输入时,因为有回车符,所以显示时与读取文件略有不同。
#include
<stdio.h>int
main(void
) {int
x, y ;char
str[128]; //确保足够的空间 //输入整数x和y的值 printf("请输入x和y的值: "); scanf("%d,%d", &x, &y); printf("x=[%d], y=[%d]\n\n", x, y); //输入字符串str的值 printf("请输入str的值: "); scanf("%s", str); printf("str=[%s]\n", str);return
0; }
输入可以重定向,输出也可以重定向,不过符号得改为“>”。也就是将输出结果放到一个文本文件中。