c语言中字符搜索函数的简单总结

   最近做一个项目,需要从文件中读取大量的数据,并获取指定类型的数据,其中用到了很多c语言中操作字符的函数。自己查了api,大致总结如下:

 

字符查找函数:

   char *strchr( const char *str, int ch );

   char* strrchr(const char* str,int ch);

   size_t strcspn( const char *str1, const char *str2 );

   size_t strspn( const char *str1, const char *str2 );  

   char *strstr( const char *str1, const char *str2 );

   void *memchr( const void *buffer, int ch, size_t count );

   char *strpbrk( const char *string, const char *strCharSet );

   char *strtok( char *strToken, const char *strDelimit );

 

    strchr和strrchr是对字符串搜索指定的字符在不在其中,返回值为找到的字符的地址,如果没有找到则返回NULL,一个是从前往后搜索一个是从后往前搜索。

以下是msdn中给出的代码:

 

Output
String to be searched: 
      The quick brown dog jumps over the lazy fox
               1         2         3         4         5
      12345678901234567890123456789012345678901234567890

Search char:   r
Result:   first r found at position 12

Result:   last r found at position 30

 

 

   strcspn函数返回的是在str1中第一个匹配到str2中任何字符的长度,而strspn返回的则是str1中第一个对str2中的任何一个字符都不匹配的长度。以下是msdn中的代码及其结果:

 

The portion of 'cabbage' containing only a, b, or c is 5 bytes long
strstr函数作用是搜索子字符串的位置,返回的是str1中str2的位置,如果没有搜索的子字符创则返回为NULL.
代码:
 
输出:
String to be searched:
   The quick brown dog jumps over the lazy fox
            1         2         3         4         5
   12345678901234567890123456789012345678901234567890

lazy found at position 36
strpbrk函数用来搜索字符集中的字符在string中出现的位置,如果字符集中的所有字符都没有在string中出现,则返回NULL。
代码:
 
输出:
1: The 3 men and 2 boys ate 5 pigs

2: 3 men and 2 boys ate 5 pigs

3: 2 boys ate 5 pigs

4: 5 pigs
memchr函数用来搜索buffer中c出现的位置,第3个参数count指明搜索的长度,如果搜索到了则返回字符出现的位置,否则为NULL。
代码:
 
输出:
String to be searched:
      The quick brown dog jumps over the lazy fox
               1         2         3         4         5
      12345678901234567890123456789012345678901234567890

Search char:   r
Result:      r found at position 12
最后一个函数是strtok,这个也是我在项目中实际用到的函数,搜索下个指定字符的位置。请注意是下一个,也就是所第一次调用该函数的
时候会搜索第一个,第二次调用,如果第一个参数为NULL,则会继续搜索下一个也就是第二个指定的字符,以此类推。
代码:
 
输出:
A string   of ,,tokens
and some  more tokens

Tokens:
 A
 string
 of
 tokens
 and
 some
 more
 tokens
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值