C语言 字符串(计算长度、统计字符个数、复制、连接、删除)核心代码全网最强汇总!
索引(均为指针函数调用形式)
一、计算字符串长度方法一方法二
二、统计字符个数三、字符串复制方法一方法二
四、 字符串连接五、字符串删除
一、计算字符串长度
方法一
核心代码:
char *p=s;
while(*p!='\0'){ //等同于 *p
p++;
}
return p-s;
案例:计算字符串的长度
#include
int length(char *s){
char *p=s;
while(*p!='\0'){ //等同于 *p
p++;
}
return p-s;
}
void main(){
char s[32];
printf("请输入一个字符串:");
gets(s);
printf("长度为:%d",length(s));
}
方法二
核心代码:
char *p=s;
while(*p++);
return p-s-1;
案例:计算字符串的长度
#include
int length(char *s){
char *p=s;
while(*p++);
return p-s-1;
}
void main(){
char s[32];
printf("请输入一个字符串:");
gets(s);
printf("长度为:%d",length(s));
}
二、统计字符个数
核心代码:
length=strlen(s);
for(i=0;i if(s[i]>='0'&&s[i]<='9'){ count++; } } 案例:统计字符串中的数字字符个数 #include #include void string_num(char s[]){ int i,length=0,count=0; length=strlen(s); for(i=0;i if(s[i]>='0'&&s[i]<='9'){ count++; } } printf("数字字符有%d个",count); } void main(){ int i,count=0; int length=0; char s[32]; printf("请输入一个字符串:"); gets(s); string_num(s); } 三、字符串复制 方法一 核心代码: while(*s1=*s2){ printf("%c",*s1); s1++; s2++; } 案例:利用指针函数调用实现字符串s2复制给s1 #include void strcpy_s(char *s1,char *s2){ printf("字符串s1为:"); while(*s1=*s2){ printf("%c",*s1); s1++; s2++; } } void main(){ char s1[32]; char s2[32]; printf("请输入字符串s1:"); gets(s1); printf("请输入字符串s2:"); gets(s2); strcpy_s(s1,s2); } 方法二 核心代码: while(*s1++=*s2++); 案例:利用指针函数调用实现字符串s2复制给s1 #include void strcpy_s(char *s1,char *s2){ while(*s1++=*s2++); } void main(){ char s1[32]; char s2[32]; printf("请输入字符串s1:"); gets(s1); printf("请输入字符串s2:"); gets(s2); strcpy_s(s1,s2); printf("字符串s1为:"); printf("%s",s1); } 四、 字符串连接 核心代码: while(*s1){ s1++; } while(*s1++=*s2++); 案例:利用指针函数调用实现两个字符串连接 #include void strcat_s(char *s1,char *s2){ while(*s1){ s1++; } while(*s1++=*s2++); } void main(){ char s1[80]; char s2[80]; printf("请输入字符串s1:"); gets(s1); printf("请输入字符串s2:"); gets(s2); strcat_s(s1,s2); printf("字符串s1为:%s\n",s1); printf("字符串s2为:%s",s2); } 五、字符串删除 核心代码: for(i=0;s[i];i++){ if((s[i]<'a'||s[i]>'z')&&(s[i]<'A'||s[i]>'Z')){ s[n++]=s[i]; } } s[n]='\0'; 案例:删除字符串中的所有大小写字母 #include void string_dele(char s[]){ int n=0,i; for(i=0;s[i];i++){ if((s[i]<'a'||s[i]>'z')&&(s[i]<'A'||s[i]>'Z')){ s[n++]=s[i]; } } s[n]='\0'; printf("删除大小写字母后:%s",s); } void main(){ char s[32]; printf("请输入一个字符串:"); gets(s); string_dele(s); }