《C语言教程》20章 main()函数


一、main()函数特有的参数“argc和argv”

在第一章中讲过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;
}

三、输出重定向

输入可以重定向,输出也可以重定向,不过符号得改为“>”。也就是将输出结果放到一个文本文件中。