【字符串处理函数-part1】

一、获取字符串长度函数

#include <string.h>
size_t strlen(const char *s);
  • 功能:计算一个字符串的长度
  • 参数:
    s:指定的字符串
  • 返回值:
    当前字符串的长度
  • 注意:strlen获取的字符串长度遇到第一个\0结束且\0不算做字符串长度之中
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    
    
    // 使用strlen 函数获取字符串长度
    // strlenn获取的字符串的长度遇到第一个\0结束
    char s1[100] = "hel\0lo";

    printf("s1_len = %d\n", strlen(s1));
    printf("s1_size = %d\n", sizeof(s1));

    char *s2 = "hello";

    printf("s2_len = %d\n", strlen(s2));
    printf("s2_size = %d\n", sizeof(s2));

    return 0;
}

执行结果
执行结果1

二、字符串拷贝函数

#include <string.h>
char *strcpy(char *dest, const char *src);
  • 功能:将src复制给dest
  • 参数:
    • dest: 目的字符串
    • src:源字符串
  • 返回值:
    • 保存dest字符串的首地址
  • 注意:
    • 使用strcpy函数复制字符串时必须保证dest足够大,否则会内存溢出
    • strcpy是将src字符串中第一个\0之前包括\0复制给dest
char *strncpy(char *dest, const char *src, size_t n);
  • 函数的说明:
    • 将src指向的字符串前n个字节,拷贝到dest指向的内存中
  • 返回值:
    • 目的内存的首地址
  • 注意:
    • strncpy不拷贝 ‘\0’;
    • 如果n大于src指向的字符串中的字符个数,则在dest后面填充n‐strlen(src)’\0’
      执行结果:
      执行结果strcpy

三、字符串追加函数

#include <string.h>
char *strcat(char *dest, const char *src);
  • 功能:将src追加到dest的后面
  • 参数:
    • dest: 目的字符串
    • src:源字符串
  • 返回值:
    • 保存dest字符串的首地址
char *strncat(char *dest, const char *src, size_t n);
  • 功能:追加src指向的字符串的前n个字符,到dest指向的字符串的后面。
  • 注意:如果n 大于src的字符个数,则只将src字符串追加到dest指向的字符串的后面追加的时候会追加’\0’
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    
    
    // 使用strcat函数追加字符串
    char s1[32] = "hello world";
    char s2[32] = "abcdefg";

    //strcat是从s1的\0的位置开始追加,直到s2的第一个\0复制完毕后结束
    strcat(s1,s2);

    printf("s1 = %s\n", s1);

    return 0;
}

执行结果:
执行结果strcat

四、字符串比较函数

#include <string.h>
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
  • 功能:strcmp是比较两个字符串的内容,strncmp是比较两个字符串的前n个字节是否一样
  • 参数:
    • s1、s2:要比较的两个字符串
    • n:strncmp中的参数n表示要比较的字节数
  • 返回值:
    • 0: s1 = s2
    • >0: s1 > s2
    • <0: s1 < s2
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    
    
    //使用strcmp比较两个字符串的内容是否一致
    //strcmp函数一个字符一个字符比较,只要出现不一样的,就会立即返回
    char s1[] = "hello";
    char s2[] = "a";

    int ret = strcmp(s1,s2);

    if(ret == 0)
    {
    
    
        printf("s1 = s2\n");
    }
    else if(ret > 0)
    {
    
    
        printf("s1 > s2\n");
    }
    else
    {
    
    
        printf("s1 < s2\n");
    }


    return 0;
}

执行结果:
执行结果strcmp

五、字符查找函数

#include <string.h>
char *strchr(const char *s, int c);
  • 功能:在字符指针s指向的字符串中,找ascii 码为c的字符
  • 参数:
    • s:指定的字符串
    • c:要查找的字符
  • 返回值:
    • 成功:找到的字符的地址
    • 失败:NULL
  • 注意:s指向的字符串中有多个ASCII为c的字符,则找的是第1个字符
char *strrchr(const char *s, int c);
  • 功能:在s指向的字符串中,找最后一次出现的ASCII为c的字符。
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    
    
    //使用strchr函数在一个字符串中查找字符
    char s[] = "hel6lo wor6ld";

    //找第一个匹配的字符
    char *ret = strchr(s, '6');

    //找最后一个匹配的字符
    //char *ret = strrchr(s, '6');

    if(ret == NULL)
    {
    
    
        printf("not found\n");
    }
    else
    {
    
    
        printf("found, at the %dth position of string s\n", ret-s);
    }

    return 0;
}

执行结果:
执行结果strchr

六、字符串匹配函数

#include <string.h>
char *strtsr(const char *haystack, const char *needle);
  • 函数说明:在haystack指向的字符串中查找needle指向的字符串,也是首次匹配
  • 返回值:
    • 找到了:找到的字符串的首地址
    • 没找到:返回NULL
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    
    
    //使用strstr函数在一个字符串中查找另一个字符串
    char s[] =  "1234:4567:666:789:666:7777";

    //strstr查找的时候,查找的是第二个参数的第一个\0之前的内容
    char *ret =  strstr(s, "666");

    if(ret == NULL)
    {
    
    
        printf("not found\n");
    }
    else
    {
    
    
        printf("found, at the %dth position of string s\n", ret - s);
    }

    return 0;
}

执行结果:执行结果strstr

七、字符串转换数值

#include <stdlib.h>
int atoi(const char *nptr);
  • 功能:将一个数字型字符串转化为整形数据
  • 参数:
    • nptr:指定的字符串
  • 返回值:
    • 获取到的整形数据
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    
    
    //使用atoi将数字型字符串转化为整形数据
    char s1[] = "7856";
    int ret1 = atoi(s1);

    printf("ret1 = %d\n",ret1);

    //使用atof将浮点型的字符串转化为浮点型数据
    char s2[] =  "3.1415926";
    double ret2 = atof(s2);

    printf("ret2 = %lf\n", ret2);

    return 0;
}

执行结果:
执行结果atoi

猜你喜欢

转载自blog.csdn.net/shuting7/article/details/130206272
今日推荐