模拟实现strcpy 模拟实现strncpy 模拟实现strcat 模拟实现strncat 模拟实现strcmp 模拟实现strncmp 模拟实现memcpy 模拟实现memmove
2016-07-30 14:25
483 查看
//模拟实现strcpy
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void my_strcpy(char *dest, const char *src)
{
assert(src);
while(*dest++ = *src++)
;
}
int main()
{
char arr1[20] = {0};
char arr2[] = "abcdef";
my_strcpy(arr1,arr2);
printf("%s\n",arr1);
system("pause");
return 0;
}模拟实现strncpy
模拟实现strncpy
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void my_strncpy(char *dest, const char *src, int n)
{
assert(src);
while( (n--) && (*dest++ = *src++) )
;
}
int main()
{
char arr1[20] = {0};
char arr2[] = "abcdef";
int n = 0;
scanf("%d",&n);
my_strncpy(arr1, arr2, n);
printf("%s\n",arr1);
system("pause");
return 0;
}
模拟实现strcat
模拟实现strcat
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
void my_strcat(char *dest, const char *src, int len)
{
char *ret=dest+len;
assert(src);
//printf("%s\n",(dest+1));
while(*ret++ = *src++)
;
}
int main()
{
char arr1[20] = "abcd";
char arr2[] = "efgh";
int len = strlen(arr1);
my_strcat(arr1, arr2, len);
printf("%s\n",arr1);
system("pause");
return 0;
}
模拟实现strncat
模拟实现strncat
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
void my_strncat(char *dest, const char *src, int len1, int len2, int n)
{
char *ret = dest+len1;
assert(src);
assert(n<=len2);
while((n--) && (*ret++=*src++))
;
}
int main()
{
char arr1[20] = "abcd";
char arr2[] = "efghi";
int len1 = strlen(arr1);
int len2 = strlen(arr2);
int n = 0;
scanf("%d",&n);
my_strncat(arr1, arr2, len1, len2, n);
printf("%s\n",arr1);
system("pause");
return 0;
}
模拟实现strcmp
模拟实现memmove
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
void my_memmove(void *dest,const void *src, int n)
{
char *pdest = (char*)dest;
char *psrc = (char*)src;
if(src>dest)
{
while((n--)&&(*pdest++=*psrc++))
;
}
else
{
pdest+=n-1;
psrc+=n-1;
while((n--)&&(*pdest--=*psrc--))
;
}
}
int main()
{
char arr[] = "abcdefgh";
int n = 0;
scanf("%d",&n);
my_memmove(arr+3, arr+1, n);
printf("%s\n",arr+3);
system("pause");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void my_strcpy(char *dest, const char *src)
{
assert(src);
while(*dest++ = *src++)
;
}
int main()
{
char arr1[20] = {0};
char arr2[] = "abcdef";
my_strcpy(arr1,arr2);
printf("%s\n",arr1);
system("pause");
return 0;
}模拟实现strncpy
模拟实现strncpy
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void my_strncpy(char *dest, const char *src, int n)
{
assert(src);
while( (n--) && (*dest++ = *src++) )
;
}
int main()
{
char arr1[20] = {0};
char arr2[] = "abcdef";
int n = 0;
scanf("%d",&n);
my_strncpy(arr1, arr2, n);
printf("%s\n",arr1);
system("pause");
return 0;
}
模拟实现strcat
模拟实现strcat
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
void my_strcat(char *dest, const char *src, int len)
{
char *ret=dest+len;
assert(src);
//printf("%s\n",(dest+1));
while(*ret++ = *src++)
;
}
int main()
{
char arr1[20] = "abcd";
char arr2[] = "efgh";
int len = strlen(arr1);
my_strcat(arr1, arr2, len);
printf("%s\n",arr1);
system("pause");
return 0;
}
模拟实现strncat
模拟实现strncat
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
void my_strncat(char *dest, const char *src, int len1, int len2, int n)
{
char *ret = dest+len1;
assert(src);
assert(n<=len2);
while((n--) && (*ret++=*src++))
;
}
int main()
{
char arr1[20] = "abcd";
char arr2[] = "efghi";
int len1 = strlen(arr1);
int len2 = strlen(arr2);
int n = 0;
scanf("%d",&n);
my_strncat(arr1, arr2, len1, len2, n);
printf("%s\n",arr1);
system("pause");
return 0;
}
模拟实现strcmp
模拟实现strcmp #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> int my_strcmp(const char *dest, const char *src) { int ret = 0; while(!(ret = (unsigned char)*dest-(unsigned char)*src) && *dest) { dest++; src++; } return ret; } int main() { char arr1[] = "abcdef"; char arr2[] = "abcdefg"; int ret = my_strcmp(arr1,arr2); if(ret == 0) { printf("%s=%s\n",arr1,arr2); } else if(ret < 0) { printf("%s<%s\n",arr1,arr2); } else { printf("%s>%s\n",arr1,arr2); } system("pause"); return 0; }
模拟实现strncmp #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> int my_strncmp(const char *dest, const char *src, int n) { int ret = 0; assert(dest); assert(src); assert(n); while( (n--) && !(ret = (unsigned char)*dest-(unsigned char)*src) && *dest ) { dest++; src++; } return ret; } int main() { char arr1[] = "abcdef"; char arr2[] = "abcedef"; int n = 0; int ret = 0; int i = 0; scanf("%d",&n); ret = my_strncmp(arr1, arr2, n); if(ret == 0) { for(i=0; i<n; i++) printf("%c",arr1[i]); printf("="); for(i=0; i<n; i++) printf("%c",arr2[i]); } else if(ret < 0) { for(i=0; i<n; i++) printf("%c",arr1[i]); printf("<"); for(i=0; i<n; i++) printf("%c",arr2[i]); } else { for(i=0; i<n; i++) printf("%c",arr1[i]); printf(">"); for(i=0; i<n; i++) printf("%c",arr2[i]); } system("pause"); return 0; }模拟实现memcpy
模拟实现memcpy #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> void my_memcpy(void *dest, const void *src, int n) { char *pdest=(char*)dest; char *psrc=(char*)src; while((n--)&& ((*pdest++) = (*psrc++))) { ; } } int main() { char arr1[20] = {0}; char arr2[] = "abcdefg"; int n = 0; scanf("%d",&n); my_memcpy(arr1,arr2,n); printf("%s",arr1); system("pause"); return 0; }
模拟实现memmove
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
void my_memmove(void *dest,const void *src, int n)
{
char *pdest = (char*)dest;
char *psrc = (char*)src;
if(src>dest)
{
while((n--)&&(*pdest++=*psrc++))
;
}
else
{
pdest+=n-1;
psrc+=n-1;
while((n--)&&(*pdest--=*psrc--))
;
}
}
int main()
{
char arr[] = "abcdefgh";
int n = 0;
scanf("%d",&n);
my_memmove(arr+3, arr+1, n);
printf("%s\n",arr+3);
system("pause");
return 0;
}
相关文章推荐
- 项目的当前版本是否为新版本判断
- Java程序的运行机制和JVM
- gap lock/next-key lock浅析Basic-Paxos协议日志同步应用
- Socket连接发送数据的一点问题
- Android中使用surfaceview+MediaPlayer播放视频
- python入门
- HDOJ 1540 Tunnel Warfare
- 第三章:linear models for regression exericse 17-24
- Android获取SDCard路径/Android获取存储器挂载点
- 花生壳01
- 【Arduino】1.1 点亮LED
- POJ 2828 Buy Tickets(线段树)
- c++ 单例模式
- Request —— 让 Node.js http请求变得超简单
- Mac的FTP下载正常,但上传失败,超时
- 第一份工作规划
- PHP生成mysql数据字典
- 你真的会用UIButton吗? UIButton详细介绍
- js时间读秒
- Linux终端里面如何显示上一屏的内容