• 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
    ", str2, str1, strspn(str1, str2));
            printf("%s in %s is %d
    ", str4, str3, strcspn(str3, str4));
    
            return 0;
    }
    
    结果分别是 10 和 3.

    此次经历,让我对 man page 的正确性有了些怀疑。虽然大部分都是对的,但对于可能影响到以后程序的稳定性和安全性的用法,必须要多举不同的例子来验证。写程序要严谨,要对自己写的每行代码都能预测到该出现的结果。

  • 相关阅读:
    Nested Lists比较经典的python代码
    Matching Character Ranges
    python 刷题记录
    SQL Access Advisor and SQL Tunning Advisor
    Reactor IO模型
    聊聊page cache与Kafka之间的事儿
    node.js cmd 输入npm-v无反应
    鼠标突然无反应,鼠标灯亮,鼠标灯不亮
    js图片转换为base64
    js实现倒计时60秒的简单代码
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/6402910.html
Copyright © 2020-2023  润新知