Chinaunix首页 | 论坛 | 博客
  • 博客访问: 376675
  • 博文数量: 57
  • 博客积分: 2299
  • 博客等级: 大尉
  • 技术积分: 1109
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-27 23:12
文章分类
文章存档

2011年(4)

2010年(53)

分类: C/C++

2010-01-22 22:47:51

刚开始看字符设备驱动就发现C的功底不扎实啊。不急,边学边补……!
1、命令行参数main(int argc,char *argv[])的理解
    argc:用于参数计数,其值表示运行程序时命令行参数的数目,其值至少为1,为1时则表示改程序后面没有命令行参数;
    *argv[]:用于参数向量,是一个指向字符串数组的指针,其中每个字符串对应一个参数。
例如:

echo hello, world!

则会打印出

hello,world!

上述程序对应如下关系

argc  = 3;

argv[0]--->"echo"

argv[1]--->"hello,"

argv[2]--->"world!"

argv[argc] = 0 /*ANSI标准要求argv[argc]的值为一空指针*/

如有:

./leds 2 0

则有:

argc = 3

argv[0] = "leds"

argv[1] = "2"

argv[2] = "0"


2、sscanf函数初识!
   sscanf():从一个字符串中读取指定格式的相符的数据。
函数原型:
    int sscanf(const char *s,const char *format,...);
与scanf()不同的是sscanf的输入字符来源于字符串s。
常见用法:
1、直接输入

char buf[512] = {0};

sscanf("123456","%s",buf);

printf("%s\n",buf);

结果为:123456

2、取指定长度的字符串。如在下例中,取最大长度为4字节的字符串

sscanf("123456 ", "%4s", buf);
printf("%s\n", buf);
结果为:1234

3、取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。

sscanf("123456 abcdedf", "%[^ ]", buf);
printf("%s\n", buf);
结果为:123456

4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。

sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);
printf("%s\n", buf);
结果为:123456abcdedf

5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。

sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);
printf("%s\n", buf);
结果为:123456abcdedf


阅读(2145) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~