C语言常用的字符串函数

ps:第一次用这玩意记录一下我还容易混淆的知识点,可能没那么精致哈,或者有些小错误(请指出嗷),见谅!咱就直接开始吧~

一、字符串的长度

1.strlen函数

  • 头文件:string.h
  • 格式:strlen(字符串地址)
  • 返值:返回字符串实际长度,不包含’\0’
char str[]="01234";
printf("%d\n",strlen(str));

结果输出:5

二、字符串的复制

1.strcpy函数

  • 头文件:string.h
  • 格式:strcpy(字符数组,字符串)
  • 返值:第一个参数的值,即一个字符的地址
  • 注:1>字符数组必须足够大
           2>拷贝时’\0’一同拷贝
           3>不能使用赋值语句为一个字符数组赋值
           4>拷贝出来的字符串被称为目标字符串,最初的字符串被称为源字符串
           5>可拷贝整个字符串也可拷贝数组的一部分
    A.
char str1[10],str2[10];
scanf("%s",str2);
strcpy(str1,str2):

       B.

const char * orig="beast";
char copy[40]="Be the best that you can be.";
char *ps;

ps=strcpy(copy+7,orig);
puts(copy);

结果输出:Be the beast
2.strncpy函数

  • 头文件:string.h
  • 格式:strncpy(字符数组,字符串,长度)
  • 返值:返回字符数组的首地址
  • 注:字符数组必须足够大
  • 功能:将字符串的前n个字符复制到字符数组中去,并在末尾加’\0’
char str[40];
strncpy(str,"0123456789",5);
printf("%s\n",str);

结果输出:01234

三、字符串的比较

1.strcmp函数

  • 头文件:string.h
  • 格式:strcmp(字符串1,字符串2)
  • 比较规则:对两个字符串从左到右逐个字符进行比较(ASCII码),直到遇到不同字符或’\0’为止
  • 返值:返回int型整数,若字符串1<字符串2,则返回负数
printf("%d\n",strcmp("apples","apple"));
printf("%d\n",strcmp("Z","a"));

结果输出:1     -1
2.strncmp函数

  • 头文件:string.h
  • 格式:strncmp(字符串1,字符串2,长度)
  • 返值:返回int型整数,若字符串1<字符串2,则返回负数
  • 功能:将字符串1前n个字符的子串与字符串2前n个字符的子串进行比较
printf("%d\n",strncmp("abcd","abcDEF",3));
printf("%d\n",strncmp("abcd","abcDEF",5));

结果输出:0     1(大于0)
3.strnicmp函数

  • 头文件:string.h
  • 格式:strnicmp(字符串1,字符串2,长度)
  • 差别:strnicmp在比较两个字符串时不区分大小写,而strcmp区分大小写
printf("%d\n",strcmp("A","a"));
printf("%d\n",strnicmp("A","a",1));

结果输出:-1(小于0)    0

四、字符串的拼接

1.strcat函数

  • 头文件:string.h
  • 格式:strcat(字符串1,字符串2)
  • 返值:返回第一个参数,即拼接第2个字符串后的第一个字符串的地址
char str[40]="wonderflower";
char str1[]="s smell like old shoes.";
strcat(str,str1);
puts(str);

结果输出:wonderflowers smell like old shoes.
2.strncat函数

  • 头文件:string.h
  • 格式:strncat(字符串1,字符串2,最大添加字符数)
char str[40]="wonderflower";
char str1[]="s smell like old shoes.";
strncat(str,str1,7);
puts(str);

结果输出:wonderflowers smell

五、字符串的组合

1.sprintf函数

  • 头文件:stdio.h
  • 格式:sprintf(目标字符串的地址,格式字符串和待写入项的列表)
  • 功能:将多个元素组合成一个字符串
char str[40]="hello world!";
int year=2020;
char final[40];

sprintf(final, "%s %d\n",str,year);
puts(final);

结果输出:hello world!2020

六、其他字符串函数

1.strchr函数
char *strchr(const char * s, int c);
如果s字符串中包含c字符,该函数返回指向s字符串首次出现的c指针(末尾的空字符也是字符串的一部分,所以在查找范围内);如果在字符串s中未找到c字符,该函数返回空指针。

2.strpbrk函数
char *strpbrk(const char * s1, const char * s2);
如果s1字符中包含s2字符串中的任意字符,该函数返回指向s1字符串首位置的指针;如果在s1字符串中未找到任何s2字符串中的字符,则返回空字符。

3.strrchr函数
char *strrchr(const char * s, int c);
该函数返回s字符串中c字符的最后依次出现的位置(末尾的空字符也是字符串的一部分,所以在查找范围内)。如果未找到c字符,则返回空指针。

char str[100] = "hello worldfor2021";
char s = 'o';
char s1 = 'a';
char *n;
n = strrchr(str,s);
printf("%s\n",n);      //输出or2021
n = strrchr(str,s1);
printf("%s",n);       //输出(null)

4.strstr函数
char *strstr(const char *s1, const char * s2);
该函数返回指向s1字符串中s2字符串出现的首位置。如果在s1中没有找到s2,则返回空字符。

char str[100] = "hello worldfor2021";
char s[100] = "for20";
char s1[100] = "hey";
char *n;
n = strstr(str,s);
printf("%s\n",n);     //输出for2021
n = strstr(str,s1);
printf("%s",n);       //输出(null)
  • 判断指针为空
if(!n)
	printf("1\n");
  • 返回下标
int num;
num = n - str;
printf("%d\n",num);

七、字符处理函数

这里是引用

猜你喜欢

转载自blog.csdn.net/X_To_Y/article/details/107135416