c语言如何实现对字符串操作,字符串操作——C语言实现

代码如下:

#include

#include

#include

#include

char ch1[]={ 'c', '+', '+'};

char ch2[]={ 'c', '+', '+', ' '};

char ch3[] = "myC++";

char ch4[] = "good idea";

int strlen_new(const char* src);//const 2'

char* strcat_new(char *strD, const char *strS);

char* strcpy_new(char *strD, const char *strS);

int strcmp_new(const char *s1, const char *s2);

void* memcpy_new(void* dst, void* src, size_t n);

void* memmove_new(void* dst, void* src, size_t n);

void* memmove_new(void* dst, void* src, size_t n)

{

char * dp = (char*)dst;

char * sp = (char*)src;

assert(src != NULL && dst != NULL && n>0);

if(sp > dp || (sp + n) < dp)

{

while(n--)

{

*(dp++)=*(sp++);

}

*dp=' ';

}

else if (sp < dp)

{

sp += n;

dp += n;

*dp = ' ';

while(n--)

*(--dp) = *(--sp);

}

return dst;

}

void* memcpy_new(void* dst, void* src, size_t n)

{

char* dp = (char*)dst;

char* sp = (char*)src;

assert(src != NULL && dst != NULL && n>0);

while(n--)

{

*dp = *sp;

dp++;

sp++;

}

dp = ' ';

return dst;

}

int strlen_new(const char* src)

{

int count = 0;

assert(src != NULL);

while(*src++ != ' ')

{

count++;

}

return count;

}

char * strcat_new(char * strD, const char * strS)

{

char * add = strD;

assert(strD != NULL && strS != NULL);

while(*strD != ' ')

strD++;

while((*strS) != ' ')

{

*strD = *strS;

strD++;

strS++;

}

*strD = ' ';

//while(*strD++ = *strS++);//cat more efficient

return add;

}

char* strcpy_new(char *strD, const char *strS)

{

char * add = strD;

assert(strD != NULL && strS != NULL);

while(*strS != ' ')

*strD++ = *strS++;

//attention姝ゅ�锛岃嫢*strS涓衡€橽0鈥橈紝鍒欏叾鍏堣祴鍊肩粰strD锛屾晠鏈€鍚庝笉闇€瑕佸啀娣诲姞' '

//while(*strD++ = *strS++);

*strD = ' ';

return add;

}

int strcmp_new(const char *s1, const char *s2)

{

//int ret;

assert(s1 != NULL && s2 != NULL);

while(*s1 && *s2 && *s1 == *s2)

{

s1++;

s2++;

}

return *s1 - *s2;

//return *s2 - *s1;

}

int main ()

{

int str_len = 0;

char* mem_src = "the src test memcpy";

char mem_dest[29] = "another hello";

char* mv_src = "the src test memmove";

char mv_dest[20];

printf("Test memcpy ret is :%s

", memcpy(mem_dest, mem_src, 20));

printf("Test memmove ret is :%s

", memmove_new(mv_dest, mv_src, 10));

str_len = strlen_new(ch3);

//printf("%s

", strcat_new(ch3, ch4));

printf("%s

", strcpy_new(ch3,ch4));

printf("strcmp = %d

", strcmp_new(ch3,ch4));

printf("len = %d ,%s

", str_len, ch3);

return 0;

}

运行结果如下:

Test memcpy ret is :the src test memcpy

Test memmove ret is :the src te

good idea

strcmp = 6

len = 5 ,good idea

Process returned 0 (0x0) execution time : 0.047 s

Press any key to continue.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值