size_t strspn (const char *s,const char * accept);
strspn返回s中第一个不在accept中出现过的字符下标。
Returns an integer value specifying the length of the substring in str that consists entirely of characters in strCharSet.
If str begins with a character not in strCharSet, the function returns 0.
accept可以包含多个字符,从str开始搜索,计算str中包含的accept中任一字符的下标。
#include <string.h>
#include <stdio.h>
main()
{
char *str="Linux was first developed for 386/486-based pcs.";
printf("%d\n",strspn(str,"Linux"));
printf("%d\n",strspn(str,"/-"));
printf("%d\n",strspn(str,""));
}

运行结果:

5

0

0

 
size_t strcspn(const char *s, const char * reject);
strcspn()从参数s 字符串的开头计算连续的字符, 而这些字符都完全不在参数reject 所指的字符串中.
简单地说, 若strcspn()返回的数值为n, 则代表字符串s 开头连续有n 个字符都不含字符串reject 内的字符.
返回字符串s 开头连续不含字符串reject 内的字符数目,也即返回s中第一个在reject中出现过的字符下标。
#include <string.h>

main(void)

{

    char *str = "Linux was first developed for 386/486-based pcs. ";

    printf("%d\n", strcspn(str, " "));

    printf("%d\n", strcspn(str, "/-"));

    printf("%d\n", strcspn(str, ""));

}
 

运行结果:

5

33

30

编程使用:key-value去掉参数前面的空格

int _nvram_init(void *unused)
{
FILE *in;
char buffer[SIZE], *token, *line;
int i;
if (!(in = fopen(PATH_DEV_NVRAM, "r"))) {
printf("nvram file can not open\n");
return -;
}
    while (fgets(buffer, 300, in)) {
if (strchr(buffer, '\n')) *(strchr(buffer, '\n')) = '\0';
token = buffer + strspn(buffer, " ");
if (*token == '\0') continue;
line = token + strcspn(token, "=");
if (*line == '\0') continue;
*line = '\0';
line++; /* eat leading whitespace */
line = line + strspn(line, " ");
/* eat trailing whitespace */
for (i = strlen(line); i > 0 && (line[i - 1]==' '); i--);
line[i] = '\0';
_nvram_set(token,line);
}
fclose(in);
printf("nvram init----\n"); return 0; }

strspn&strcspn的更多相关文章

  1. udhcpd源码分析2--读取配置文件

    1:重要的结构体 读取配置文件信息到全局的结构体struct server_config_t server_config中,这个结构在很多文件中都有引用到很重要. /* dhcpd.h */ stru ...

  2. 自己编写的str操作函数

    1.strcat() 此函数原型为 char *strcat(char *dest, const char *src). 功能为连接两个字符串,把src连接到dest后面:返回dest地址 实现如下 ...

  3. php回顾(3)系统函数

    abs()         绝对值 ceil()         向上取整 floor()       向下取整 round()     四舍五入           第二个参数:保留小数点后面几位 ...

  4. strspn 和strcspn

    1.strcspn头文件:#inclued<string.h>定义函数:size_t strcspn(const char *s, const char * reject);函数说明:st ...

  5. 【 C 】高级字符串查找之 strspn 和 strcspn 的思考

    我的CSDN博客 strspn 这个库函数是真的很难理解,看了很多中文描述,反正都是不知所云,给出一系列的例子,结果也是让我瞠目结舌,荒唐.荒谬.荒诞! 特此记录理解过程,最后竟然是百度百科让我明白了 ...

  6. strspn() 和 strcspn() 函数【转】

    本文转载自:https://flyer103.wordpress.com/2011/06/03/strspn-%E5%92%8C-strcspn-%E5%87%BD%E6%95%B0/ 前几天在看一本 ...

  7. strspn和strcspn妙用

    http://blog.csdn.net/aidenliu/article/details/5460201

  8. 内存及字符串操作篇strlen strchar strcmp strcoll strcpy strdup strstr strtok strspn strrchr bcmp bcopy bzero index memccpy memset

    bcmp(比较内存内容) 相关函数 bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp 表头文件 #include<string.h> 定 ...

  9. 由ffmpeg中avformat模块中的 URL_SCHEME_CHARS 看 strspn( ) 的妙用

    在ffmpeg的avformat 模块中avio.c 对 URL_SCHEME_CHARS 的定义: #define URL_SCHEME_CHARS \ "abcdefghijklmnop ...

随机推荐

  1. mysql 跟踪sql执行方法

    摘 自: http://bbs.jee-soft.cn:8086/showtopic-166.aspx 日志是调试程序非常有用的工具. 1  配置my.ini文件(在安装目录,linux下文件名为my ...

  2. 转: Android Studio你不知道的调试技巧

    http://tianweishu.com/2015/12/21/android-studio-debug-tips-you-may-not-know/

  3. java 过滤器补充

    多个Filter按照在配置文件中配置的filter顺序执行. 在web.xml文件中配置该Filter,使用init-param元素为该Filter配置参数,init-param可接受如下两个子元素: ...

  4. Solidworks如何让齿轮运动副保证持续啮合状态

    出现这种情况一般是齿轮的比例有问题,如果你选择两个齿轮的齿顶圆的面,则自动比例是44:74,然后手动转动某个齿轮,就会出现不能啮合的情况   只要模数相同的齿轮不管大小都能始终啮合,但是你需要首先为每 ...

  5. vue - config(dev.env.js和prov.env.js)

    描述:配置产品模式.打包模式:开发还是打包,以最佳运行(不配置则有一个大大的Warning!!!) 官网:https://www.webpackjs.com/concepts/mode/

  6. vue - webpack.dev.conf.js for HtmlWebpackPlugin

    描述: 这是一个webpack插件,可以简化HTML文件的创建,为您的webpack捆绑服务提供服务. 这对于webpack包含文件名中包含哈希值的bundle 来说尤其有用,它会更改每个编译. 您可 ...

  7. 《深入浅出pig系列之中的一个》pig-0.12.0-cdh5.1.2的安装与执行

    这里使用的版本号是cdh发行的pig-0.12.0-cdh5.1.2 下载地址点这里 1.Pig简单介绍: Pig是yahoo捐献给apache的一个项目.它是SQL-like语言.是在MapRedu ...

  8. Linux下SVN部署/安全及权限配置,实现web同步更新

    转自:http://www.cnblogs.com/me115/archive/2013/04/07/3002058.html 本文包含以下内容: SVN服务器安装 SVN权限管理 SVN使用SASL ...

  9. 关于ThreadLocal变量的一个坑

    每个线程都有一个ThreadLocalMap对象,ThreadLocalMap是Thread的一个内部类,可以把ThreadLocalMap理解成一个Map,这个Map里存放这一个Thread的所有线 ...

  10. Linux-使用 screen 管理你的远程会话

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-screen/ 你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是 ...