C语言中strlen() strcpy() strcat() strcmp()函数的实现方法

strlen函数原型:unsigned int strlen(const char *);返回的是字符串中第一个\0之前的字符个数。

  1.strcat函数原型char* strcat(char* dest,const char* src); 进行字符串的拼接,将第二个字符串连接到第一个字符串中第一个出现\0开始的地方。返回的是拼接后字符的首地址。并不检查第一个数组的大小是否可以容纳第二个字符串。如果第一个数组的已分配的内存不够容纳第二个字符串,则多出来的字符将会溢出到相邻的内存单元。

  2.strncat函数原型:strncat(dest,src,maxsize)功能跟strcat一致,不过它带有一个maxsize的参数,设置容纳的最大的字符长度。如在遇到\0之前达到了最大字符长度,则会只连接最大字符长度个数的字符。

  3.strcpy函数原型 char* strcpy(char* dest,const char* src); 将第二个字符串\0之前的字符复制到第一个内存地址内。返回的是复制后的字符串的首地址。有char*返回值是为了函数能够支持链式表达式,增加了函数的“附加值”。 char a[7]="abcdef",char b[5]="xyz";

strcpy(a,b)函数 当将后面的数组赋值给前面那个时侯 除去五个元素后,从下标为5开始的元素仍旧是之前a[5]的元素。

  4.strncpy(str1,str2,numbe)函数是将str2中的前number个字符赋给str1,或是将\0之前的字符赋给str1.

  5.strcmp函数原型 int strcmp(const char *src1,const char* src2);进行两个字符串中从第一个开始的ASCII码的比较。遇到\0或者不一致时退出,如果前者大于后者返回1,小于返回-1 如果在两个中的任何一个的\0之前都保持一致,则返回0. 当src或src遇到\0时即停止比较.strcmp比较的是字符串,不是字符,字符之间的比较可以直接用==

  6.strncmp(str1,str2,numbe)函数在strcmp的基础上多了一个int参数,即指定比较前几个字符是否相等。

注意:对于strcat函数和strcpy函数并没有进行边界大小的限定,所以在用时要注意是否足够内存。

对于内存问题:用memcpy函数更为安全。

memcpy函数原型void * memcpy(void *desc,const char* src,unsigned int count);相对于strcpy函数,memcpy函数并不是将\0前面的字符复制给desc,而是将前count个字符进行复制。

memcmp函数,函数原型: int memcmp(void *buf1, void *buf2, unsigned int count);也是对两个字符串之前的count个字符进行比较。

例子:

#include<stdio.h>
#include<assert.h>
//strlen
unsigned int strlenght(const char* src)
{
 unsigned int len=0;
 assert(src!=0);
 while(*src++)
 {
  len++;
 }
 return len;
}
//strcat
char* strlink(char* dest,char* src)
{
 char *tmp=dest;
 assert((dest!= NULL)&&(src!=NULL));
 while(*dest++);
 *dest--;
 while(*dest++=*src++);
  return tmp;
}
//strcpy
char* strcopy(char* dest,const char* src)
{
 char *tmp=dest;
 assert((dest!=NULL)&&(src!=NULL));
 while(*src)
 {
  *dest++=*src++;
 }
 *dest='\0';
 return tmp;
}
//strcmp
int strcompare(const char* src1,const char* src2)
{
 int x=0;
 while(!(x = *src1-*src2) && *src1)
 {
  src1++;
  src2++;
 }
 if(x>0)
  x = 1;
 if(x<0)
  x = -1;
 return x;
}
void main()
{
 char arr[100] = "It's wonderful weather!!";
 char arr1[20] = "I am\0 fine!";
 char *arr2;
 printf("%s的长度为:%d\n",arr,strlenght(arr));
 printf("%s的长度为:%d\n",arr1,strlenght(arr1));
 arr2 = strlink(arr,arr1);
 printf("%s\n%s\n",arr2,arr);
 printf("%s %s\n %d\n",arr1,arr,strcompare(arr1,arr));
 printf("%s\n%s\n",arr,strcopy(arr,arr1));
}

总结

以上所述是小编给大家介绍的C语言中strlen() strcpy() strcat() strcmp()函数的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • C语言中strcmp的实现原型

    C语言中strcmp的实现原型 实现代码: int __cdecl strcmp ( const char * src, const char * dst ) { int ret = 0 ; while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst) ++src, ++dst; if ( ret < 0 ) ret = -1 ; else if ( ret > 0 ) ret = 1 ; ret

  • 浅谈C语言中strcpy,strcmp,strlen,strcat函数原型

    实例如下: //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, const char *strSrc) { char *res=strDest; assert((strDest!=NULL)&&(strSrc!=NULL)); while(*strDest)strDest++; while(*strDest=*strSrc) { strDest++; strSrc

  • C++实现strcmp字符串比较的深入探讨

    strcmp的实现函数简介原型:extern int strcmp(const char *s1,const char * s2); 用法:加头文件 #include <string.h> 功能:比较字符串s1和s2.一般形式:strcmp(字符串1,字符串2)返回值: 当s1<s2时,返回值<0 当s1=s2时,返回值=0 当s1>s2时,返回值>0 即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止.如:"A

  • C语言中strlen() strcpy() strcat() strcmp()函数的实现方法

    strlen函数原型:unsigned int strlen(const char *);返回的是字符串中第一个\0之前的字符个数. 1.strcat函数原型char* strcat(char* dest,const char* src); 进行字符串的拼接,将第二个字符串连接到第一个字符串中第一个出现\0开始的地方.返回的是拼接后字符的首地址.并不检查第一个数组的大小是否可以容纳第二个字符串.如果第一个数组的已分配的内存不够容纳第二个字符串,则多出来的字符将会溢出到相邻的内存单元. 2.str

  • C语言字符串函数操作(strlen,strcpy,strcat,strcmp)详解

    目录 一.strlen函数模拟 二. strcpy函数模拟  三.strcat函数模拟 四.strcmp函数模拟 总结 一.strlen函数模拟 字符串以'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包括'\0'); 有三种方法可以实现该操作: ①计数器方式 ②不能创建临时变量计数器 ③指针-指针  方法一:计数器方式 int my_strlen(const char* str) { int count = 0;//定义count用来记录字符串数组中字符数

  • C语言字符串函数操作(strlen,strcpy,strcat,strcmp)详解

    目录 一.strlen函数模拟 二. strcpy函数模拟 三.strcat函数模拟 四.strcmp函数模拟 总结 一.strlen函数模拟 字符串以‘\0’作为结束标志,strlen函数返回的是在字符串中‘\0’前面出现的字符个数(不包括‘\0’); 有三种方法可以实现该操作: ①计数器方式 ②不能创建临时变量计数器 ③指针-指针 方法一:计数器方式 int my_strlen(const char* str) { int count = 0;//定义count用来记录字符串数组中字符数 w

  • C语言详细讲解strcpy strcat strcmp函数的模拟实现

    目录 一.模拟实现strcpy函数 二.模拟实现strcat函数 三.模拟实现strcmp函数 四.小结 一.模拟实现strcpy函数 strcpy函数是字符串拷贝函数,就是将源字符串拷贝到目标空间中. char * strcpy ( char * destination, const char * source );//库函数中的声明 将源(source)指向的c字符串复制到目标(destination)指向的数组中,包括终止的空字符(并在该点停止). 为避免溢出,目标(destination

  • R语言中的fivenum与quantile()函数算法详解

    fivenum()函数: 返回五个数据:最小值.下四分位数数.中位数.上四分位数.最大值 对于奇数个数字=5,fivenum()先排序,依次返回最小值.下四分位数.中位数.上四分位数.最大值 > fivenum(c(1,12,40,23,13)) [1] 1 12 13 23 40 对于奇数个数字>5,fivenum()先排序,我们可以求取最小值,最大值,中位数.在排序中,最小值与中位数中间,若为奇数,取其中位数为下四分位数,若为偶数,取最中间两个数的平均值为下四分位数:在排序中,中位数与最大

  • 详解C语言中sizeof如何在自定义函数中正常工作

    1.在main函数中,sizeof是可以正常工作的,比如: int main() { int n[5]; printf("input: \n"); int i ; for(i = 0; i < 5; i++) { scanf("%d",n + i); } int len = sizeof(n)/sizeof(n[0]); printf("%d\n",len); return 0; } 2.但是在自定义函数中就不可以了,如下: #includ

  • 举例详解Go语言中os库的常用函数用法

    (f *File).Name()这个函数是返回文件的名称,函数原型func (f *File) Name() string要文件的指针操作,返回字符串,感觉比较鸡助的方法底层实现 复制代码 代码如下: func (f *File) Name() string { return f.name }  import (  "fmt"  "os" ) func main() {  f, _ := os.Open("1.go")  fmt.Println(

  • 浅析C语言中的setjmp与longjmp函数

    setjmp和longjmp是C语言独有的,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理. 先来看一下这两个函数的定义吧: setjmp和longjmp的函数原型在setjmp.h中 函数原型:int setjmp(jmp_buf envbuf); setjmp函数用缓冲区envbuf保存系统堆栈的内容,以便后续的longjmp函数使用.setjmp函数初次启用时返回0值. void longjmp(jmp_buf

  • C语言中socket相关网络编程函数小结

    C语言socket()函数:建立一个socket通信 头文件: #include <sys/types.h> #include <sys/socket.h> 定义函数: int socket(int domain, int type, int protocol); 函数说明:socket()用来建立一个新的socket, 也就是向系统注册, 通知系统建立一通信端口. 参数domain 指定使用何种的地址类型, 完整的定义在/usr/include/bits/socket.h 内,

  • go语言中的interface使用实例

    go语言中的interface是一组未实现的方法的集合,如果某个对象实现了接口中的所有方法,那么此对象就实现了此接口.与其它面向对象语言不同的是,go中无需显示声明调用了哪个接口. 复制代码 代码如下: package main   import (  "fmt" )   type I interface {  Get() int  Put(int) }   type S struct{ i int }   func (p *S) Get() int  { return p.i } f

随机推荐