Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4611928
  • 博文数量: 385
  • 博客积分: 21208
  • 博客等级: 上将
  • 技术积分: 4393
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-30 13:40
文章分类

全部博文(385)

文章存档

2015年(1)

2014年(3)

2012年(16)

2011年(42)

2010年(1)

2009年(2)

2008年(34)

2007年(188)

2006年(110)

分类: LINUX

2006-12-16 22:00:25

sscanf是一个很好用的函数,利用它可以从字符串中取出整数、浮点数和字符串等等。它的使用方法简单,特别对于整数和浮点数来说。但新手可能并不知道处理字符串时的一些高级用法

1.         常见用法。

char str[512] = {0};

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

    printf("str=%s\n", str);

 

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

    sscanf("123456 ", "%4s", str);

    printf("str=%s\n", str);

 

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

    sscanf("123456 abcdedf", "%[^ ]", str);

    printf("str=%s\n", str);

 

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

    sscanf("123456abcdedfBCDEF", "%[1-9a-z]", str);

    printf("str=%s\n", str);

 

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

    sscanf("123456abcdedfBCDEF", "%[^A-Z]", str);

    printf("str=%s\n", str);
   
   
    应用程序重起自身等几则技巧

 

1.         应用程序重起自身。

以前开发一个服务器软件,当通过客户端工具修改某些设置后,服务器要重新重动自己。当时竟想不出什么好办法,只好开了两个进程,子进程为工作进程,父进程为监视进程,子进程退出时,父进程再重起子进程。在busybox里发现一种最简单的重起方法:

int main(int argc, char* argv[])

{

    sleep(2);

 

    printf("%s %s\n", argv[0], argv[1]);

    fflush(stdout);

 

    execv(argv[0], argv);

 

    return 0;

}

 

2.         用printf打印long long整数。

几天前为了用printf打印出long long的整数,不得不去查看glibc的源代码, 精神可嘉!

#include

 

int main(int argc, char argv[])

{

    long long val = 0;

 

    sscanf("0x1122334455667788", "0x%Lx", &val);

    printf("val = 0x%Lx\n", val);

 

    sscanf("1122334455667788", "%Ld", &val);

    printf("val = %Ld\n", val);

 

    return 0;

}

 

阅读(6116) | 评论(4) | 转发(0) |
0

上一篇:学习使用nslookup

下一篇:学习使用diff,patch

给主人留下些什么吧!~~