字符串函数
发布日期:2021-05-10 13:47:50 浏览次数:20 分类:精选文章

本文共 2122 字,大约阅读时间需要 7 分钟。

目录


strstr

头文件:
    #include "string.h"
函数原型:
    char *strstr(const char *haystack, const char *needle);      //大小写敏感
    char *strcasestr(const char *haystack, const char *needle);  //大小写不敏感
参数含义:
    haystack:总的字符串
    needle:要查找的字符串
返回值:
    成功:返回字符串str中从haystack地址开始第一次出现needle的地址;
    失败:返回NULL。
例程:
#include "stdio.h"
#include "string.h"
int main(int argc, char **argv)
{
    char str_src[] = "this is a sample string";
    char str_tar[]  = "sample";
    char *str_pos   = NULL;
    str_pos = strchr(str_src,str_tar);
    while(pch != NULL ){
        printf("Location : %d\n",str_pos-str_src);
        str_pos = strchr(str_pos+1, str_tar);
    }
    return 0;

strchr

头文件:
    #include "string.h"
函数原型:
    char *strchr(const char *s, int c);      //第一个位置
    char *strrchr(const char *s, int c);     //最后一个位置
    char *strchrnul(const char *s, int c);   //和strchr基本一样。但如果找不到,它返回的是字符串s结尾的空字符地址。
返回值:
    成功:返回字符串s中从haystack地址开始第一次出现c的地址;
    失败:返回NULL。
示例:
#include "stdio.h"
#include "string.h"

int main(int argc, char **argv)

{
    char str[] = "this is a sample string";
    char *pch;

    /* look for 's' in str */

    pch = strchr(str, 's');
    printf("str address = %p\n", str);
    printf("pch address = %p\n", pch);
    while(pch != NULL){
        printf("found at %d\n", pch - str);
        pch = strchr(pch + 1, 's');
    }
    return 0;
}

执行结果:

str address = 0x7fff0c54dee0

pch address = 0x7fff0c54dee3
found at 3
found at 6
found at 10
found at 17

strtoul

原型:long int strtol(const char *str, char **endptr, int base)

头文件:stdlib.h
作用:把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型),
    base 必须介于 2 和 36(包含)之间,或者是特殊值 0。跳过前面的空白字符(例如空格,tab缩进等,
    可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结
    束时('\0')结束转换,并将结果返回。
参数:
  str -- 要转换为长整数的字符串。
  endptr -- 对类型为 char* 的对象的引用,其值由函数设置为 str 中数值后的下一个字符。
  base -- 基数,必须介于 2 和 36(包含)之间,或者是特殊值 0。当 base 的值为 0 时,默认采用 10 进制
     转换,但如果遇到 '0x' / '0X' 前置字符则会使用 16 进制转换,遇到 '0' 前置字符则会使用 8 进制转换。
返回值
  成功:返回转换后的长整数
  0:如果没有执行有效的转换(不能转换或者 str 为空字符串)
  ULONG_MAX:转换得到的值超出unsigned long int 所能表示的范围
示例:
int main(int argc, char **argv)
{
    char str[30] = "2030300 This is test";
    char *ptr;
    long ret;

    ret = strtol(str, &ptr, 10);

    printf("num is:%ld\n", ret);
    printf("string is:%s\n", ptr);
    return 0;
}
运行结果:
num is:2030300
string is: This is test    //注意:This前边有一个空格

 

 

上一篇:printf、sprintf、snprintf、fprintf
下一篇:Linux命令--文件命令

发表评论

最新留言

不错!
[***.144.177.141]2025年04月20日 16时02分50秒