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

[复制链接]
895|4
 楼主| niuyaliang 发表于 2015-3-17 20:46 | 显示全部楼层 |阅读模式
一、main()函数特有的参数“argc和argv”

在第一章中讲过main()函数的参数,但没有讲怎么使用。argc(即argument Count)和argv(argument vector)是main()函数特有的参数,“argc”不用传入,是系统自动计算参数的个数放入这个参数中,不过,exe程序名自身也处一个,也就是说,一个参数也没有的情况,argc应该等于1。小雅曾试着用于普通函数,但都没有自动计数的特殊功能。


  1. #include <stdio.h>

  2. int main(int argc, char **argv)
  3. {

  4.     int i;

  5.     printf("argc = [%d]\n", argc);

  6.     for (i=0; i<argc; i++) {
  7.         printf("%s\n", argv[i]);
  8.     }

  9.     return 0;

  10. }


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| niuyaliang 发表于 2015-3-17 20:46 | 显示全部楼层
上例中“this is quanxue”本来想作为一个字符串输出,结果却变成3个,连同test.exe共4个了。解决带有空格的字符串是用双引号,例如要带参数“小雅”和“this is quanxue”。
在Unix中单引号、双引号都可以,也可以不用引号,空格使用转义字符“\ ”。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| niuyaliang 发表于 2015-3-17 20:47 | 显示全部楼层
二、环境变量的取得
在第一章介绍main()函数时,省略了第三种定义,并非小雅当时还不知道,而是认为实在没有必要,因为标准函数库里面已经有了getenv()函数,简单方便地取任何环境变量的值,也许这第三种定义还有小雅不知道的好处吧。至于getenv()函数这儿不讲,以后在标准函数库中讲解。

  1. #include <stdio.h>

  2. int main(int  argc,
  3.          char **argv,
  4.          char **envp
  5.         )
  6. {
  7.     int i;

  8.     //显示前5个环境变量
  9.     for (i=0; i<5; i++) {
  10.         printf("%s\n", envp[i]);
  11.     }

  12.     return 0;

  13. }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| niuyaliang 发表于 2015-3-17 20:48 | 显示全部楼层
三、输入重定向
对于从屏幕中要输入的内容,可以事先输入在文本文件中,运行程序时用“<”将文件导入。注意,从屏幕中直接输入时,因为有回车符,所以显示时与读取文件略有不同。
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.     int x, y ;
  5.     char str[128];    //确保足够的空间

  6.     //输入整数x和y的值
  7.     printf("请输入x和y的值: ");
  8.     scanf("%d,%d", &x, &y);
  9.     printf("x=[%d], y=[%d]\n\n", x, y);

  10.     //输入字符串str的值
  11.     printf("请输入str的值: ");
  12.     scanf("%s", str);
  13.     printf("str=[%s]\n", str);

  14.     return 0;
  15. }


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| niuyaliang 发表于 2015-3-17 20:49 | 显示全部楼层
三、输出重定向
输入可以重定向,输出也可以重定向,不过符号得改为“>”。也就是将输出结果放到一个文本文件中

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

212

主题

2427

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部