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) |