strspn() 和 strcspn() 函数【转】
本文转载自:https://flyer103.wordpress.com/2011/06/03/strspn-%E5%92%8C-strcspn-%E5%87%BD%E6%95%B0/
前几天在看一本关于 Unix 环境编程的书时,在一个程序中有个库函数 strspn(),不知道用法是什么。在 Linux 下通过
$ man 3 strspn
查看它的用法。但其中讲的不明白,举了几个例子都与 man 中的解释相反。Google 了很多次才明白用法,具体为:
#include <string.h>
size_t strspn(const char *s, const char *accept);
size_t strcspn(const char *s, const char *reject); 注意两个函数的返回值的位置,都是按 s 的首位置为 0 开始计数的。
第一个函数的作用是,从 s 第一个字符开始,逐个检查字符与 accept 中
任意字符是否不相同,若不相同,则返回第一次出现不相同的位置且程序
正常退出,否则返回的是 s 的长度.
第二个函数作用是,从 s 第一个字符开始,逐个检查字符与 reject 中任
意字符是否相同,若相同,则返回第一次出现相同的位置且程序正常退出,
否则返回的是 s 的长度. 示例:
/*
* To understand the useage of strspn()
*/ #include <stdio.h>
#include <string.h> int main(int argc, char *argv[])
{
char *str1 = "1234567890";
char *str2 = "1234567890";
char *str3 = "gdfa1234af5";
char *str4 = "ha"; printf("%s in %s is %d\n", str2, str1, strspn(str1, str2));
printf("%s in %s is %d\n", str4, str3, strcspn(str3, str4)); return 0;
} 结果分别是 10 和 3.
此次经历,让我对 man page 的正确性有了些怀疑。虽然大部分都是对的,但对于可能影响到以后程序的稳定性和安全性的用法,必须要多举不同的例子来验证。写程序要严谨,要对自己写的每行代码都能预测到该出现的结果。
strspn() 和 strcspn() 函数【转】的更多相关文章
- 【 C 】高级字符串查找之 strspn 和 strcspn 的思考
我的CSDN博客 strspn 这个库函数是真的很难理解,看了很多中文描述,反正都是不知所云,给出一系列的例子,结果也是让我瞠目结舌,荒唐.荒谬.荒诞! 特此记录理解过程,最后竟然是百度百科让我明白了 ...
- PHP strcspn() 函数
实例 输出在字符串 "Hello world!" 中找到字符 "w" 之前查找的字符数: <?php高佣联盟 www.cgewang.comecho st ...
- php strcspn()函数 语法
php strcspn()函数 语法 作用:输出在字符串中找到某字符之前查找的字符数.直线电机参数 语法:strcspn(string,char,start,length) 参数: 参数 描述 str ...
- strspn 和strcspn
1.strcspn头文件:#inclued<string.h>定义函数:size_t strcspn(const char *s, const char * reject);函数说明:st ...
- strcspn()函数
函数描述: 检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符. 函数声明: #include<string.h> size_t strcspn(const char ...
- strcspn函数的用法
#include <string.h> main() { char *str = "Linux was first developed for 386/486-based pcs ...
- strspn和strcspn妙用
http://blog.csdn.net/aidenliu/article/details/5460201
- PHP字符串——字符串函数
比较字符串PHP有两个操作符和6个函数用于字符串间相互比较. 精确比较你可以用==和===操作符来比较两个字符串是否相等.这两个操作符的不同在于它们如何处理非字符串数据类型的操作数.==操作符把非字符 ...
- C和C指针小记(十四)-字符串、字符和字节
1.字符串 C语言没有字符串数据类型,因为字符串以字符串常量的形式出现或存储于字符数组中. 字符串常量和适用于那些程序不会对他们进行修改的字符串. 所有其他字符串都必须存储于字符串数组或动态分配的内存 ...
随机推荐
- openwrt源码下载移植
openwrt源码下载移植 一.源码下载 1.1下载 由于本人多次尝试从SVN代码地址下载代码,出现无法访问因此这里选择从Git代码地址进行下载.在linux系统命令终端输入 git clone gi ...
- ios -为什么用WKWebView加载相同的html文本,有时展示的内容却不一样。
如图: 红色框部分是WKWebView,左边的是正常显示情况,右边的异常显示.我是在网页加载完成回调里执行的webview高度自适应内容: // 页面加载完成之后调用 - (void)webVie ...
- Codeforces 460 D. Little Victor and Set
暴力+构造 If r - l ≤ 4 we can all subsets of size not greater than k. Else, if k = 1, obviously that ans ...
- PHPStorm2017去掉参数提示 parameter name hints
JetBrains 的各种语言的 IDE 都灰常灰常好用, 个个都是神器, PHPStorm 作为PHP开发的神器也不必多说了 今天升级到 PHPStorm 2017.1 发现增加了好些新功能, 有个 ...
- centos7 下 的lamp 的安装原创详细教程
时间 : 2017-08-03 目标: 基于CENTOS7 安装 LNMP,liunx的安装不做讲解,主要是 NGINX PHP7 MYSQL 的编译安装 第一节 nginx ...
- 深入PHP内核 SAPI探究
转自 http://www.csdn.net/article/2014-09-26/2821885-exploring-of-the-php-2 SAPI是Server Application Pro ...
- codevs1068 乌龟棋==洛谷P1541 乌龟棋
P1541 乌龟棋 题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家 ...
- Neighbor Discovery Protocol Address Resolution Protocol
https://en.wikipedia.org/wiki/Address_Resolution_Protocol The Address Resolution Protocol (ARP) is a ...
- JS判断是手机访问还是PC端访问网站
<script> if ((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iOS|iPad|Backerry|WebOS|S ...
- Python基础-configparser和hashlib模块
configparser模块 import configparser config = configparser.ConfigParser() #将配置写入到文件 config[', 'Compres ...