C语言常用字符串函数,求串长strlen(char *s)、串复制strcpy(char *s1,char *s2)、串连接strcat(char *s1,char *s2)、串比较strcmp(char *s1,char *s2)、串定位strchar (s,char c)演示、解析
1. 求串长函数
int strlen(char *s);
所需参数串的首地址。
返回值为int,表示串的长度。
#include<stdio.h>#include<string.h>int main(){char s[100]="abcdefg";// int strlen(char *s);求串长,返回值为整型int n;n=strlen(s);//传入字符串首地址printf("%d\n",n);return 0;}
运行截图
2. 串复制函数
char *strcpy(char *s1,char *s2);
所需参数s1为要被赋值到的字符串的地址,s2为要赋值的字符串地址。
#include<stdio.h>#include<string.h>int main(){char s1[100];char s2[100]="ABCDEF";char *s;//用于接收返回值//char *strcpy(char *s1,char *s2);将s2串复制到s1串,返回s1首地址s=strcpy(s1,s2);printf("s1地址为:%d\ns地址为:%d\n",s1,s);printf("%s\n",s);return 0;}
运行截图
若s1为非空串,则覆盖之前的
#include<stdio.h>#include<string.h>int main(){char s1[100]="9999999999999";char s2[100]="ABCDEF123";char *s; //用于接收返回值//char *strcpy(char *s1,char *s2);将s2串复制到s1串,返回s1首地址s=strcpy(s1,s2);printf("s1地址为:%d\ns地址为:%d\n",s1,s);printf("%s\n",s);return 0;}
运行截图
3.串连接函数char *strcat(char *s1,char *s2);
将s2串复制到s1串末尾,返回s1首地址
#include<stdio.h>#include<string.h>int main(){char s1[100]="123";char s2[100]="456";char *s;//char *strcat(char *s1,char *s2);将s2串复制到s1串末尾,返回s1首地址s=strcat(s1,s2);printf("s1地址为:%d\ns地址为:%d\n",s1,s);printf("%s\n",s);return 0;}
运行截图
4.字符串比较函数int *strcat(char *s1,char *s2);
是通过按位比较ASCII码值的,一旦与长度无关,一旦发现大的就不在往后比较。
当s1>s2时返回1
当s1<s2是返回-1
当s1==s2是返回0
注:ASCII码A是65、B是66、C是67、1是49
当s1>s2
#include<stdio.h>#include<string.h>int main(){char s1[100]="11C";char s2[100]="11B";int n;//int *strcat(char *s1,char *s2);比较s1和s2的大小//当s1>s2时返回1//当s1<s2是返回-1//当s1==s2是返回0//按位比较ASCII码值n=strcmp(s1,s2);printf("%d\n",n);return 0;}
运行截图
当s1<s2
#include<stdio.h>#include<string.h>int main(){char s1[100]="11A";char s2[100]="11B";int n;//int *strcat(char *s1,char *s2);比较s1和s2的大小//当s1>s2时返回1//当s1<s2是返回-1//当s1==s2是返回0//按位比较ASCII码值n=strcmp(s1,s2);printf("%d\n",n);return 0;}
运行截图
当s1==s2
#include<stdio.h>#include<string.h>int main(){char s1[100]="11A";char s2[100]="11A";int n;//int *strcat(char *s1,char *s2);比较s1和s2的大小//当s1>s2时返回1//当s1<s2是返回-1//当s1==s2是返回0//按位比较ASCII码值n=strcmp(s1,s2);printf("%d\n",n);return 0;}
运行截图
是通过按位比较ASCII码值的,一旦与长度无关,一旦发现大的就不在往后比较
#include<stdio.h>#include<string.h>int main(){char s1[100]="A";char s2[100]="11B";int n;//int *strcat(char *s1,char *s2);比较s1和s2的大小//当s1>s2时返回1//当s1<s2是返回-1//当s1==s2是返回0//按位比较ASCII码值n=strcmp(s1,s2);printf("%d\n",n);return 0;}
运行截图
**5.字符定位charstrcat(chars,char c);
第一个参数是字符串地址,第二个是待求字符
返回的是内存地址
#include<stdio.h>#include<string.h>int main(){char s[100]="987654321";char c;//char *strcat(char *s,char c);找c在字符串s中第一次出现的位置//若找到则返回该位置,即内存地址,否则返回NULLc='8';printf("s中的地址为:%d\n",&s[1]);printf("返回的地址为:%d\n",strchr(s,c));c='A';printf("若没有则返回:%s\n",strchr(s,c));return 0;}
运行截图