C语言 自己实现字符串操作API1

/**/部分为自己的想法

puts和gets:

void myputs(char *str)
{
	//字符串结尾是'\0'
	while(*str != '\0'){
		putchar(*str);
		str++;
    }
    putchar('\n');
}
int mygets(char *str)
{
	int cnt = 0;
	if(str == NULL){
		puts("内存非法访问!");
        return;
    }
    while(*str = getchar()){
		if(*str != '\n'){      //gets()结束是'\n'
			str++;
            cnt++;
        }else{
			return cnt;       //计算输入字节数
        }
    }
    /*
	while(*(str-1) != '\n'){
		*str = getchar();
		str++;
    }
    return;
    */
}

strlen:

int mystrlen(char *str)
{
	int cnt = 0;
	while(*str != '\0'){     //字符串结尾是'\0'
		cnt++;
        str++;
    }
    return cnt;   //计算字节数
}

memset:

void mymemset(char *str , char c , int size)
{
    while(size){
		*str = c;
        size--;
        str++;
    }
    /*int i;
    for(i=0 ; i<size ; i++){
		*str = c;
        str++;
        
    }
    */
}

strcpy:

char *mystrcpy(char *dest,char *src)
{
	if(dest == NULL || src == NULL){
		return NULL;
    }
    //字符串结尾是'\0'
    while(*src != '\0'){
		*dest = *src;
        dest++;
        src++;
    }
    *dest = '\0'; //防止结尾乱码
    return dest;
}

strncpy:

char *mystrncpy(char *dest,char *src,int size)
{
	
	if(dest == NULL || src == NULL){
		return NULL;
    }
    //字符串结尾是'\0'
    while(*src != '\0' && size>0){
		*dest = *src;
        dest++;
        src++;
        size--;
    }
    *dest = '\0'; //防止结尾乱码
    return dest;
}

strcat:

char *mystrcat(char *dest,char *src)
{
    while(*dest != '\0'){
		dest++;
    }
    while(*src != '\0'){
		*dest++ = *src++;
    }
    *dest = '\0'; //防止尾部乱码
   
    /*
	int i = 0;
    
	
    while(*dest != '\0' || *src != '\0'){
		for(i =0 ; i<strlen(dest) ; i++){
			dest++;
            
        }
        for(i=0 ; i<strlen(src) ; i++){
			*dest++ = *src++;
        }
    }*/
    return dest;
    
}

一些笔记

char *p;//野指针
char *p = NULL;

野指针与NULL都不可以对输入字符串进行操作!
野指针:不知道指向哪里
NULL:谁都不指
可以用`

char *p;
p = (char *)malloc(128);
if(p == NULL ){
	printf("申请内存失败\n");
	exit(-1);
}
memset(p,'\0',128);

相当于char p[128] = {'\0'};

当需要再次使用strcpy时,最好先进行充值(memset)。

strcat函数:dest的空间一定要足够容纳追加的字符串。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值