当前位置:首页 » 编程语言 » c语言手写strcpy函数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言手写strcpy函数

发布时间: 2022-06-18 17:42:12

c语言中strcpy函数怎么用看题

strcpy
将第二个拷贝到第一个
即拷完以后a为a2\0
注意每个字符串最后都有个\0
然后
strcat
后a就是"a2yz"
最终输出结果为"a2yz"

Ⅱ C语言 strcpy函数

printf("%d\n",sizeof(s),strlen(s));
这句话错误,少了一个%d,sizeof也不应该分开写。
strcpy(s,t);
是将字符数组t里面的内容赋给字符数组s,
t[0]=X,t[1]=Y,t[2]=Z,t[3]="\0",当strcpy()函数执行完之后,字符数组s中的内容变为s[0]=X,s[1]=Y,s[2]=Z,s[3]="\0",s[4]=E,s[5]=F.
sizeof(s)的值是字符数组的大小即为20。
strlen(s)的值为“\0”之前的字符长度即为3.
printf("%c,%s\n",s[4],s);
当输出字符数组s时,编译器当碰到第一个“\0”后便停止输出,所以s的输出为:XYZ

Ⅲ C语言自己写strcpy函数怎么写

#include <stdio.h>
#define LEN 1024
/* */
static void *memcpy(void *d, const void * s, size_t n);
static void *memmove(void *d, const void *s, size_t n);
static char *strcpy(char *d, const char *s);
static char *strncpy(char *d, const char *s, size_t n);
/* link */
static char *strcat(char *s1, const char *s2);
static char *strncat(char *s1, const char *s2, size_t n);
/* len*/
static size_t strlen(const char *s);
/* cmp */
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
int memcmp(const void *s1, const void *s2, size_t n);
/* find */
void *memchr(const void *s, int key_char, size_t n);
char *strchr(const char *s, int key_char);
char *strstr(const char *s, const char *key_str);
size_t strcspn(const char *s1, const char *s2);
size_t strspn(const char *s1, const char *s2);
char *strpbrk(const char *s1, const char *s2);
/* other */
char *strtok(char *s1, const char *s2);
void *memset(void *s, int c, size_t n);
int main(void)
{
char buf[LEN] ;
char *src = "world";
char *ss = "oucch";

printf("strlen -> src[len] = %d\n", strlen(src));
printf("memcpy ->%s\n", (char *)memcpy(buf, src, strlen(src) + 1));
printf("buf -> %s\n", buf);
printf("memmove->%s\n", (char *)memmove(buf + 3,buf, strlen(buf) + 1));
printf("buf -> %s\n", buf);
printf("strcpy -> %s\n", strcpy(buf, src));
printf("buf -> %s\n", buf);
printf("strncpy -> %s\n", strncpy(buf, ss, 1));
printf("buf -> %s\n", buf);
printf("strcat -> %s\n", strcat(buf, src));
printf("buf -> %s\n", buf);
printf("strncat-> %s\n", strncat(buf, src, 1));
printf("buf -> %s\n", buf);
printf("strcmp : %d\n", strcmp("123", "1234"));
printf("strncmp : %d\n", strncmp("123", "1234", 3));
printf("strncmp : %d\n", strncmp("123", "1234", 5));
printf("memcmp: %d\n", memcmp("123", "1235", 4));
printf("strcspn: %d\n" ,strcspn("wangtianqing", "ang"));

return 0;}
static void * memcpy(void *d, const void *s, size_t n)
{
char *d1;
const char *s1;

for(d1 = d, s1 = s; 0 < n; --n)
*d1++ = *s1++;
return (d);
}
static void *memmove(void *d, const void *s, size_t n)
{
char *d1;
const char *s1;

d1 = d;
s1 = s;
if (s1 < d1 && s1 < d1 + n)
for(s1 += n, d1 +=n; 0 < n; --n)
*--d1 = *--s1;
else
for(; 0 < n; --n)
*d1++ = *s1++;
return (d);
}
static char *strcpy(char *d, const char *s)
{
char *d1;
const char *s1;

for(d1 = d, s1 = s; (*d1++ = *s1++) != '\0';)
;
return (d);
}
static char *strncpy(char *d, const char *s, size_t n)
{
char *d1;
const char *s1;

for(d1 = d, s1 = s; 0 < n && *s1 != '\0'; --n) {
*d1++ = *s1++;
}
for(; 0 < n; --n)
*d1++ = '\0';
return (d);
}
static size_t strlen(const char *s)
{
const char *s1;

for(s1 = s; *s1 != '\0'; ++s1)
;
return (s1 - s);
}
static char *strcat(char *s1, const char *s2)
{
char *st1;
const char *st2;

for(st1 = s1 ; *st1 != '\0'; ++st1)
;
for(st2 = s2; (*st1++ = *st2++) != '\0';)
;
return (s1);
}
static char *strncat(char *s1, const char *s2, size_t n)
{
char *st1;
const char *st2;

for(st1 = s1; *st1 != '\0'; ++st1)
;
for(st2 = s2; 0 < n && (*st1++ = *st2++) != '\0'; --n)
;
return (s1);
}
int strcmp(const char *s1, const char *s2)
{
for(; *s1 == *s2; ++s1, ++s2)
if(*s1 == '\0')
return (0);
return ((*(unsigned char *) s1 < *(unsigned char *) s2 ) ? -1: +1);
}
int strncmp(const char *s1, const char *s2, size_t n)
{
for(; 0 < n && *s1 == *s2; ++s1, ++s2)
if( *s1 == '\0')
return (0);
return (*(unsigned char *) s1 > *(unsigned char *) s2 ? -1 : +1);
}
int memcmp(const void *s1, const void *s2, size_t n)
{
const unsigned char *st1;
const unsigned char *st2;

for(st1 = s1, st2 = s2; 0 < n; ++st1, ++st2, --n)
if( *st1 != *st2)
return (*st1 < *st2 ? -1 : +1);
return 0;
}
void *memchr(const void *s, int key_char, size_t n)
{
const unsigned char uc = key_char;
const unsigned char *us;

for( us = s; 0 < n; --n, ++us)
if( uc == *us)
return ((void *)us);
return (NULL);
}
char *strchr(const char *s, int key)
{
const char *s1 = s;

for(; *s1 != '\0'; ++s1)
if(*s1 == key)
return ((char *)s1);
return (NULL);
}

size_t strcspn(const char *s1, const char *s2)
{
const char *sc1, *sc2;

for(sc1 = s1; *sc1 != '\0'; ++sc1)
for(sc2 = s2; *sc2 != '\0'; ++sc2)
if(*sc1 == *sc2)
return (sc1 - s1);
return (sc1 - s1);
}
size_t strspn(const char *s1, const char *s2)
{
const char *sc1;
const char *sc2;

for(sc1 = s1; *sc1 != '\0'; ++sc1) {
for(sc2 = s2; *sc2 != '\0'; ++sc2)
if(*sc1 == *sc2)
break;
if(*sc2 == '\0')
return (sc1 - s1);
}
return (sc1 - s1);
}
char *strpbrk(const char *s1, const char *s2)
{
const char *sc1, *sc2;

for( sc1 = s1; *sc1 != '\0'; ++sc1)
for( sc2 = s2; *sc2 != '\0'; ++sc2)
if (*sc1 == *sc2)
return ((char *)sc1);
return (NULL);
}
char *strstr(const char *s, const char *key_str)
{
if (*key_str == '\0')
return ((char *) s);
for(; (s = strchr(s, *key_str)) != NULL; ++s) {
const char *sc1, *sc2;

for (sc1 = s, sc2 = key_str; ;) {
if( *++sc2 == '\0')
return ((char *)s);
else if( *++sc1 != *sc2)
break;
}

}
return (NULL);
}
char *strtok(char *s1, const char *s2)
{
char *sbegin, *send;
static char *ssave = "";

sbegin = s1 ? s1 : ssave;
sbegin += strspn(sbegin, s2);
if( *sbegin == '\0') {
ssave = "";
return (NULL);
}
send = sbegin + strcspn(sbegin, s2);
if( *send != '\0')
*send++ = '\0';
ssave = send;
return sbegin;
}
void *memset(void *s, int c, size_t n)
{
const unsigned char uc = c;
unsigned char *su;

for( su = s; 0 < n; ++su, --n)
*su = uc;
return (s);
}

所有的函数原型都在这了 你想要哪个都行
谢谢采纳

Ⅳ c语言中的strcpy是什么意思

c语言中strcpy是一个C语言的标准库函数,是string (字符串复制)的缩写。strcpy函数的作用是把含有\0结束符的字符串复制到另一个地址空间,返回值的类型为char*。


C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%至20%。因此,C语言可以编写系统软件。当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显着。

Ⅳ c语言 strcpy 函数的使用

1、strcpy函数是复制字符串的,接受两个参数,一个是被复制字符串,另一个新字符串。具体的用法,首先打开编辑器新建一个c语言的程序文件,写入头文件和主函数:

Ⅵ c语言中的strcpy什么意思,简单点解释

strcpy是一个C语言的标准库函数,是string (字符串复制)的缩写。strcpy函数的作用是把含有''结束符的字符串复制到另一个地址空间,返回值的类型为char*。

(6)c语言手写strcpy函数扩展阅读:

C语言中,strcpy 函数不对数组边界进行检查,因而在使用 strcpy 函数时,应注意以下两点:

一、strcpy函数的缓冲区溢出问题

C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。

二、strcpy函数的安全机制

在编写 strcpy 函数时,首先尽量使目的缓冲区长度足够长,另外要检测目的缓冲区和源缓冲区。如果目的缓冲区或源缓冲区是空,就要在异常处理中结束程序。如果源字符串比目的缓冲区长度不长,也要在异常处理中结束程序,以防止出现溢出情况。

Ⅶ C语言 写个strcpyh函数

#include <stdio.h>
#include <string.h>
char* StrCpy(char *strDest, const char *strSrc)
{
if(!strDest||!strSrc)
return NULL;
if (!strlen(strSrc))
{
*strDest='\0';
return strDest;
}
char* tmp=strDest;
do
{
*tmp++=*strSrc;
} while (*strSrc++);
return strDest;
}
int main()
{
char str1[20],str2[20];
scanf("%s",str2);
printf("%s\n",StrCpy(str1,str2));//这一行就说明了返回char*的作用
return 0;
}

Ⅷ c语言中strcpy函数干什么用的

他是字符串的复制,函数strcpy(字符数组1,字符串2)作用就是 将字符串2复制到字符数组1 中去。

例如 char str1[10]='',

str2[]={“china”}

strcpy(str1,str2);

这样str1[]数组的内容就是“china”。

(8)c语言手写strcpy函数扩展阅读:

C语言库函数,常用库函数有:

1、scanf格式输入函数

2、printf格式输出函数

3、systemdos命令函数

4、sort排序

5、main主函数

6、fgets文件读取字符串函数

7、fputs文件写入字符串函数

8、fscanf文件格式读取函数

9、fprintf文件格式写入函数

10、fopen打开文件函数

11、getchar输入字符函数

12、putchar输出字符函数

13、malloc动态申请内存函数

Ⅸ 关于C语言strcpy函数

strcpy(p1,p1++)意思就是将以p1+1地址开头的字符串赋给p1,这样的话p1这个位置的字符就被挤出去了。
后面p1--是因此现在p1指向的是原来p1+1的位置,还没有经过判断,如果没有这一句,循环后p1++,这个位置就跳过了。