C语言常用的字符串处理函数(代码实现)

常用函数:

strcat 函数——字符串连接函数

strcpy/strncpy 函数——字符串复制函数

strcmp 函数——字符串⽐较函数

strlen函数——测字符串长度的函数

strlwr函数——转换为⼩写的函数

字符串拼接(strcat)

指针法:(指针函数:返回一个地址)

#include<stdio.h>
char *strc(char *str1,char *str2){
    char *p;
    for(p=str1;*p;p++);		 //定位到 s1字符串 中的'\0' 位置
    do{*p++=*str2++;}while(*str2);
    *p='\0';				//超级重要!!!
    return str1;
}
int main(){
    char s1[80]="abc",s2[]="vhfb",*pt;
    pt=strc(s1,s2);
    printf("%s\n",pt);
    return 0;
}

指针法:

#include<stdio.h>
void strc(char *p1,char *p2){
    char *p=p1;
    while (*p1)p1++;
    while (*p2)*p1++=*p2++;
    *p1='\0';
}
int main(){
    char s1[80]="abc",s2[]="vhfb";
    strc(s1,s2);
    puts(s1);
    return 0;
}

普通方法:

#include <stdio.h>
//将s2连接到s1后面, s2不改变
void strconcat(char *s1,char *s2){
    int i,j;
    for(i = 0;s1[i];i++);  //定位到 s1字符串 中的'\0' 位置
    for(j = 0;s2[j];i++,j++)
        s1[i] = s2[j];
    s1[i] = '\0';       //结束!!!超级重要!!!超级容易忘!!!
}
int main(){
    char a[100],b[100];
    gets(a);
    gets(b);
    strconcat(a,b);
    puts(a);
    return 0;
}

判断字符串是否相等(strcmp)

#include <stdio.h>
int flag=1;
void strp(char *s,char *t){
    int i=0;
    while (*(s+i)==*(t+i)&&*(s+i)!=0)i++;
    if(*(s+i)!='\0'||*(t+i)!='\0')flag=0;
}
int main(){
    char a[10],b[10];
    gets(a);
    gets(b);
    strp(a,b);
    if (flag)
        printf("两个字符串相等");
    else
        printf("两个字符串不相等");
    return 0;
}

字符串赋值(strcpy)

#include <stdio.h>
//s2字符串 复制 到s1中
void strcopy(char *s1,char *s2){
    while (*s2)*s1++=*s2++;
    *s1 = '\0';        //超级重要!!!
}
int main(){
    char s1[100],s2[100];
    gets(s2);
    strcopy(s1,s2);
    puts(s1);
}

字符串长度(strlen)

#include <stdio.h>
int strl(char *str){
    int len=0;
    while(*str++) len++;
    return len;
}
int main(){
    char str[100];
    gets(str);
    printf("%d",strl(str));
    return 0;
}

字符串大写转小写(strlwr)

#include <stdio.h>
// 大写转小写
void strtol(char *str)
{
    while (*str){
    *str += 32;
    str++;
    }
}
int main()
{
    char str[100];
    gets(str);
    strtol(str);
    puts(str);
    return 0;
}

字符串小写转大写(strlwr)

#include <stdio.h>
// 小写转大写
void strtou(char *str)
{
    while (*str){
        *str -= 32;
        str++;
    }
}
int main()
{
    char str[100];
    gets(str);
    strtou(str);
    puts(str);
    return 0;
}

拓展
例1:将输入的字符串中每个单词首字母转为大写

#include <stdio.h>
#define TRUE 1
#define FALSE 0
int change(char *c,int status)
{
    if(*c==' ')return TRUE;
    else{
        if (status&& *c<='z'&&*c>='a')*c -=32;
        return FALSE;
    }
}
int main()
{
    int flag=TRUE;
    char ch;
    do{
        ch=getchar();
        flag=change(&ch,flag);
        putchar(ch);
    }while (ch!='.');
    printf("\n");
    return 0;
}

输入:this is a text.
输出:This Is A Text.

例2:找出一个英语句子中最长单词有几个字母

#include<stdio.h>
int main(){
    char *p,a[]={"I am happy ."};
    int max=0,len=0;
    p=a;
    while (*p!='.')
    {
        while (((*p<='Z')&&(*p>='A')||(*p<='z')&&(*p>='a')))
        {
            len++;
            p++;
        }
        if(len>max)max=len;
        len=0;p++;
    }
    printf("max=%d",max);
    return 0;
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

又又爱拍照

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值