字符串相关API源码

puts源码 输出调用时传来的字符串

void puts(char *p){
	
	while(*p != '\0'){
		putchar(*p);
        p++;
    }
    putchar('\n');
}

gets源码 扫描用户从键盘输入的字符序列

void gets(char *p){
	if(p == NULL){
		return;
    }
    
    while( *p = getchar() ){
		if(*p == '\n'){
			return;
        }
        else{
			p++;
        }
    }
}

参数: 指针p
将用户从键盘输入的字符序列存放到指定的字符串中

strlen源码 计算字符串有效字符的长度

int strlen(char *p){
	int cnt = 0;
    while(*p != '\0'){
		cnt++;
        p++;
    }
    return cnt;
}

参数:指针p
利用p遍历字符串时,cnt++计数
返回值:cnt(int)

memset源码 初始化数组

void memset(char *p, char c, int size){
	while(size--){
		*p = c;
        p++;
        size--;
    }
    *p = '\0';  //补上结束标志,否则尾巴不是很干净,有乱码
}

strcpyt 源码

//     1
char *strcpy(char *dest, char *str){
	if(dest == NULL || str == NULL){
		return NULL;
    }
    while(*str != '\0'){
		*dest = *str;
        dest++;
        str++;
    }
    *dest = '\0';
    return dest;

}
//    2
void strcpy(char *dest, char *str){
	if(dest == NULL || str == NULL){
		return;
    }
    while(*str != '\0'){
		*dest = *str;
        dest++;
        str++;
    }
    *dest = '\0';
}

参数:
dest—源字符串
str------目标字符串
作用:将目标字符str串拷到源字符dest串中
返回值:源字符串dest地址

其实返回值是指针型的我个人觉得再调用的时候dest返回的地址
是字符串的串尾地址,但再编译器上还是可以run,可能是我对
于指针的理解还是不是很到位,第2个代码我认为是正确的,实际
也是可以run的

strncpy源码

char *myStrncpy(char *dest, char *str, int n){
	if(dest == NULL || str == NULL){
		return NULL;
    }
    while(*str != '\0' && n>0){
		*dest = *str;
        dest++;
        str++;
        n--;
    }
    *dest = '\0';
    return dest;

}

参数:
dest—源字符串
str------目标字符串
n--------指定所要拷贝的目标字符串的长度
作用:将目标字符串中str从头开始拷贝n个长度的字符到源字符dest中
返回值:源字符串dest地址

strcpy源码

void strcat(char *dest, char *str){
	if(dest == NULL || str == NULL){
		return;
    }
    while(*dest != '\0'){
		dest++;
    }
    while(*str != '\0'){
		*dest = *str;
        dest++;
        str++;
    }
    *dest = '\0';
}

参数:
dest—源字符串
str------目标字符串
作用:将目标字符串中str连接到到源字符dest后

strcmp源码

int strcmp(char *dest, char *str){
    while( *dest == *str){
		if(*dest == '\0' && *str == '\0')
			return 0;
		dest++;
        str++;
    }
    if(*dest > *str)
		return 1;       
	if(*dest < *str)
		return -1;
}

本人处于初学c阶段,也是看了好几篇博文,但是都不尽人意,花了一点时间,琢磨了一下,总算是写出来了,经调试没有错误,不做过多解释,只有自己花心思了才会真正太高,我写完后真的觉得自己又对c的认识又进步了一点。
师从抖音上官可编程,我编程路上的启蒙老师

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值