C语言之字符串管理函数,模拟库函数strcpy

C语言–模拟库函数strcpy,strcat,strcmp

C语言之字符串管理函数,模拟库函数strcpy。一、库strcpy函数,把三个字符串复制到其余三个字符串中

 

#include<stdio.h>
#include<assert.h>
char* my_srtcpy( char *srt, char*src)
{
    assert(srt);
    assert(src);
    char *tmp = src;
    while (*src++ = *srt++)
    {
        ;
    }
    return tmp;
}
int main(void)
{
    char* arr = "abcdef";
    char arr1[10];
    printf("%s\n",my_srtcpy(arr, arr1));
}

 

 

二、库strcat函数,把多个字符串追加到另七个字符串中

 

#include<stdio.h>
#include<assert.h>
char* my_srtcat(char* srt,  const char* src)
{
    assert(srt!=NULL);
    assert(src!=NULL);
    char *ret = srt;
    while (*srt)
    {
        srt++;
    }
    while (*srt++ = *src++)
    {
        ;
    }
    return ret;
}
int main(void)
{
    char arr[15] = "abcdef";
    char* arr1 = "cd";
    printf("%s\n", my_srtcat(arr, arr1));
}

 

三、strcmp函数,比很多少个字符串str1,str2,相等重回0;str1>str2再次回到1;else
重临-1

#include<stdio.h>
#include<assert.h>
int my_srtcmp(const char*srt1, const char* srt2)
{
    assert(srt1);
    assert(srt2);
    while (*srt1 == *srt2)
    {
        if (*srt1 == '\0')
        {
            return 0;
        }
        srt1++;
        srt2++;    
    }
    if (srt1 > srt2)
    {
        return 1;
    }
    else
    {
        return -1;
    }
}
int main(void)
{
    char *arr = "abcd";
    char *arr1 = "abc";
    printf("%d\n", my_srtcmp(arr, arr1));
}

 

一、库strcpy函数,把叁个字符串复制到别的三个字符串中
#includestdio.h#includeassert.hchar* my_srtcpy( char
*srt,…

strlen函数原型:unsigned int strlen(const char *);重返的是字符串中首先个\0事先的字符个数。

strlen函数原型:unsignedintstrlen(constchar*);再次回到的是字符串中首先个\0事先的字符个数。

C语言中字符串管理函数介绍

  1.strcat函数原型char* strcat(char* dest,const char* src); 举办字符串的拼接,将第二个字符串连接到第两个字符串中首先个冒出\0起来的地点。重返的是拼接后字符的首地址。并不检讨第贰个数组的分寸是不是足以包容第二个字符串。假设第一个数组的已分配的内部存款和储蓄器远远不够容纳第一个字符串,则多出去的字符将会溢出到相邻的内部存款和储蓄器单元。

  1.strcat函数原型char*strcat(char*dest,constchar*src);实行字符串的拼接,将第一个字符串连接到第三个字符串中率先个冒出\0伊始的地点。重回的是拼接后字符的首地址。并不检查第八个数组的分寸是或不是足以包容第3个字符串。尽管第三个数组的已分配的内部存款和储蓄器远远不足容纳第三个字符串,则多出去的字符将会溢出到相邻的内部存款和储蓄器单元。


  2.strncat函数原型:strncat(dest,src,maxsize)功用跟strcat一致,然则它蕴含二个maxsize的参数,设置容纳的最大的字符长度。如在碰着\0以前高达了最大字符长度,则会只连接最大字符长度个数的字符。

  2.strncat函数原型:strncat(dest,src,maxsize)作用跟strcat一致,可是它包括一个maxsize的参数,设置容纳的最大的字符长度。如在碰着\0事先到达了最大字符长度,则会只连接最大字符长度个数的字符。

上面介绍8种为主的常用的字符串管理函数,在数值数组中也时常使用(部分函数)。全部的C语言编写翻译系统中一般都提供那一个函数。

  3.strcpy函数原型 char* strcpy(char* dest,const char* src); 将第3个字符串\0事先的字符复制到第三个内部存储器地址内。重返的是复制后的字符串的首地址。有char*再次回到值是为了函数能够扶助链式表达式,扩大了函数的“附加值”。 char a[7]=”abcdef”,char b[5]=”xyz”;

  3.strcpy函数原型char*strcpy(char*dest,constchar*src);将第一个字符串\0事先的字符复制到第贰个内部存款和储蓄器地址内。再次回到的是复制后的字符串的首地址。有char*再次回到值是为着函数能够帮助链式表明式,扩大了函数的“附加值”。chara[7]=”abcdef”,charb[5]=”xyz”;

澳门葡京备用网址 ,1、puts函数——输出字符串的函数

strcpy(a,b)函数 当将前面的数组赋值给前方那一个时侯 除去三个成分后,从下标为5最先的因素依然是此前a[5]的元素。

strcpy函数当将前面包车型地铁数组赋值给前方这一个时侯除去五个要素后,从下标为5开端的成分依然是从前a[5]的元素。

 一般的样式为puts(字符串组)

  4.strncpy(str1,str2,numbe)函数是将str第22中学的前number个字符赋给str1,或是将\0在此以前的字符赋给str1.

  4.strncpy(str1,str2,numbe)函数是将str第22中学的前number个字符赋给str1,或是将\0事先的字符赋给str1.

效果与利益:将三个字符串输出到巅峰。如,char多少个string,并予以初值。调用puts(string);实行字符串的输出。

  5.strcmp函数原型 int strcmp(const char *src1,const char* src2);进行三个字符串中从第八个起来的ASCII码的比较。境遇\0或然不雷同不常候退出,假如前者大于后面一个再次来到1,小于重返-1 若是在两个中的任何叁个的\0事先都保持一致,则赶回0. 当src或src境遇\0时即甘休比较.strcmp相比的是字符串,不是字符,字符之间的比较能够直接用==

  5.strcmp函数原型intstrcmp(constchar*src1,constchar*src2);举行多少个字符串中从第二个起来的ASCII码的比较。蒙受\0或许区别时退出,假诺前者大于前者再次回到1,小于重临-1举例在两个中的任何贰个的\0事先都保持一致,则赶回0.当src或src碰到\0时即结束相比.strcmp相比的是字符串,不是字符,字符之间的相比较可以直接用==

2、gets函数——输入字符串的函数

  6.strncmp(str1,str2,numbe)函数在strcmp的基础上多了三个int参数,即钦点相比前多少个字符是不是等于。

  6.strncmp(str1,str2,numbe)函数在strcmp的底子上多了贰个int参数,即钦点相比较前多少个字符是不是等于。

貌似的款型:gets(字符数组)

当心:对于strcat函数和strcpy函数并未举行边界大小的范围,所以在用时要留意是不是丰裕内部存款和储蓄器。

留神:对于strcat函数和strcpy函数并从未进展边界大小的范围,所以在用时要留意是不是丰盛内存。

功用:从终端输入三个字符串到字符数组,并且赢得一个函数值成为字符数组的开地方址。

对于内部存款和储蓄器难点:用memcpy函数更为安全。

对此内部存款和储蓄器难题:用memcpy函数更为安全。

gets(str);

memcpy函数原型void * memcpy(void *desc,const char* src,unsigned int count);绝对于strcpy函数,memcpy函数并非将\0前边的字符复制给desc,而是将前count个字符举办复制。

memcpy函数原型void*memcpy(void*desc,constchar*src,unsignedintcount);相对于strcpy函数,memcpy函数实际不是将\0后边的字符复制给desc,而是将前count个字符实行复制。

键盘输入,,,,你知道。

memcmp函数,函数原型: int memcmp(void *buf1, void *buf2, unsigned int count);也是对三个字符串此前的count个字符举办比较。

memcmp函数,函数原型:intmemcmp(void*buf1,void*buf2,unsignedintcount);也是对三个字符串以前的count个字符实行比较。

留心:puts和gets函数只好输出恐怕输入八个字符串。

例子:

例子:

3、strcat函数——字符串连接函数

 

 1 #include<stdio.h> 2 #include<assert.h> 3  4 //strlen 5 unsigned int strlenght(const char* src) 6 { 7     unsigned int len=0; 8     assert(src!=0); 9     while(*src++)10     {11         len++;12     }13     return len;14 }15 //strcat16 char* strlink(char* dest,char* src)17 {18     char *tmp=dest;19     assert((dest!= NULL)&&(src!=NULL));20     while(*dest++);21     *dest--;22     while(*dest++=*src++);23         return tmp;24 }25 //strcpy26 char* strcopy(char* dest,const char* src)27 {28     char *tmp=dest;29     assert((dest!=NULL)&&(src!=NULL));30     while(*src)31     {32         *dest++=*src++;33     }34     *dest='\0';35     return tmp;36 }37 //strcmp38 int strcompare(const char* src1,const char* src2)39 {40     int x=0;41     while(!(x = *src1-*src2) && *src1)42     {43         src1++;44         src2++;45     }46     if(x>0)47         x = 1;48     if(x<0)49         x = -1;50     return x;51 }52 void main()53 {54     char arr[100] = "It's wonderful weather!!";55     char arr1[20] = "I am\0 fine!";56     char *arr2;57 58     printf("%s的长度为:%d\n",arr,strlenght;59     printf("%s的长度为:%d\n",arr1,strlenght;60 61     arr2 = strlink;62     printf("%s\n%s\n",arr2,arr);63     printf("%s    %s\n %d\n",arr1,arr,strcompare);64 65     printf("%s\n%s\n",arr,strcopy);66 }

貌似的样式:strcat(字符数组1,字符数组2);

 1 #include<stdio.h>
 2 #include<assert.h>
 3 
 4 //strlen
 5 unsigned int strlenght(const char* src)
 6 {
 7     unsigned int len=0;
 8     assert(src!=0);
 9     while(*src++)
10     {
11         len++;
12     }
13     return len;
14 }
15 //strcat
16 char* strlink(char* dest,char* src)
17 {
18     char *tmp=dest;
19     assert((dest!= NULL)&&(src!=NULL));
20     while(*dest++);
21     *dest--;
22     while(*dest++=*src++);
23         return tmp;
24 }
25 //strcpy
26 char* strcopy(char* dest,const char* src)
27 {
28     char *tmp=dest;
29     assert((dest!=NULL)&&(src!=NULL));
30     while(*src)
31     {
32         *dest++=*src++;
33     }
34     *dest='\0';
35     return tmp;
36 }
37 //strcmp
38 int strcompare(const char* src1,const char* src2)
39 {
40     int x=0;
41     while(!(x = *src1-*src2) && *src1)
42     {
43         src1++;
44         src2++;
45     }
46     if(x>0)
47         x = 1;
48     if(x<0)
49         x = -1;
50     return x;
51 }
52 void main()
53 {
54     char arr[100] = "It's wonderful weather!!";
55     char arr1[20] = "I am\0 fine!";
56     char *arr2;
57 
58     printf("%s的长度为:%d\n",arr,strlenght(arr));
59     printf("%s的长度为:%d\n",arr1,strlenght(arr1));
60 
61     arr2 = strlink(arr,arr1);
62     printf("%s\n%s\n",arr2,arr);
63     printf("%s    %s\n %d\n",arr1,arr,strcompare(arr1,arr));
64 
65     printf("%s\n%s\n",arr,strcopy(arr,arr1));
66 }

效果与利益:把八个字符串数组中字符串连接起来,把字符串2连接到字符串1的末尾。

 

注明:字符数组1必得充分大,以便容纳连接后的新字符串。

 

4、strcpy/strncpy函数——字符串复制函数

 

貌似情势:strcpy(字符数组1,字符串2);

意义:将字符串2复制到字符数组第11中学去。

如:char str1[10],str2[]=”DongTeng”;

strcpy(str1,str2);

施行后的结果为:你通晓

瞩目:1.不可能用赋值语句间接将一个字符串常量可能字符数组直接给四个字符数组。

     
 2.用strncpy可以赋值钦定的岗位的字符。strncpy(str1,str2,3);将str第22中学的第4个字符复制到str第11中学。

5、strcmp函数——字符串相比较函数

相似格局:strcmp(字符串1,字符串2);

意义:用来相比较八个字符串的差距。具备差异的比较法则。

6、strlen函数——测字符串长度的函数

相似方式:strlen(字符数组);

如:char str[10]=”DongTeng”;

     printf(“%d”,strlen(str));

获取的结果是:5

7、strlwr函数——转变为小写的函数

一般情势:strlwr(字符串);

8、strupr函数——转变为题写的函数

诚如方式:strupr(字符串)。


以上只是简短的C语言常用函数,不足之处还望指正。

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website