字符函数和字符串函数的关系,字符串函数的用法

  字符函数和字符串函数的关系,字符串函数的用法

  1.strlen

  size _ t strlen(const char * str);

  1.字符串以 \0 结尾,strlen函数返回字符串中出现在 \0 之前的字符数不包括( \0 )。

  2.参数指向的字符串必须以“\0”结尾。

  3.注意,函数的返回值是size_t,它是无符号的(容易出错)

  用不变递归函数实现strlen

  #include assert.h

  无符号整数my_strlen(const char* p)

  断言(p);

  if (*p!=\0)

  return(my _ strlen(p)1);

  其他

  返回0;

  int main()

  char arr[]= abcdef ;

  my _ strlen(arr);

  printf(%d ,my _ strlen(arr));

  2.strcpy

  charc py(char destination,const char * source));

  将源复制到目标

  源字符串必须以“\0”结尾。

  将源字符串中的“\0”复制到字符空间中。

  目标空间必须足够大,以容纳源字符串。

  目标必须是可变的。

  学会模拟实现。

  #包含字符串. h

  char * my_strcpy(char* p1,const char* p2)

  断言(p1!=NULL);

  断言(p2!=NULL);

  char * ret=p1

  //将p2指向的字符串复制到p1指向的空间,包括 \0

  while(* P1=* p2);

  返回ret//返回目标空间的起始地址

  int main()

  char arr 1[]= abcdef ;

  char arr 2[]= bit ;

  //strcpy(arr1,arr 2);

  my_strcpy(arr1,arr 2);

  printf(%s ,arr 1);

  返回0;

  }

  3.strcat

  char stract(char目标,const char*源)

  1.源字符串必须以“\0”结尾。

  2.目标空间必须足够大,以容纳下一个源字符串的内容。

  3.目标空间必须是可修改的。

  4.把字符串追加到它本身怎么样?

  5.自己实现strcat

  //实现strcat

  char* my_strcat(char* p1,const char* p2)

  char * p3=p1

  while(* P1);

  P1-;

  while(* P1=* p2);

  返回P3;

  int main()

  char arr 1[20]= abcdef ;

  char arr2[]=爱;

  char *p=my_strcat(arr1,arr 2);

  printf(%s\n ,p);

  返回0;

  }

  4.strcmp

  int strcmp ( const char str1,const char str 2);

  比较两个字符串

  比较c字符串str1和c字符串str2。

  这个函数开始比较每个字符串的第一个字符。如果它们彼此相等,继续使用下面的字符对,直到字符不同或到达结束空字符。

  这个函数执行字符的二进制比较。有关考虑特定于区域设置的规则的函数,请参见strcoll。

  标准:

  1.如果第一个字符串大于第二个字符串,将返回一个大于0( 0)的数字。

  如果第一个字符串等于第二个字符串,将返回0。

  3.如果第一个字符串小于第二个字符串,将返回一个小于0( 0)的数字。

  4.那么如何判断两根弦呢?

  用函数实现strcmp

  //自己实现strcmp

  int my_strcmp(常量字符* p1,常量字符* p2)

  断言(P1 p2);

  While (*p1==*p2)//通过判断两者是否相等可以进去。

  if (*p1==\0 )

  返回0;

  P1;

  p2;

  if (*p1 *p2)

  返回1;

  else if (*p1 *p2)

  return-1;

  int main()

  char * p1= abcdefgh

  char * p2= abcdefgh

  int ret=my_strcmp(p1,p2);

  printf(%d ,ret);

  返回0;

  }

  5.strncpy

  char strncpy ( char目的地,const char * source,size _ t num);

  1.将num个字符从源字符复制到目标空间。

  2.如果源字符串的长度小于num,则在复制源字符串后将0追加到后面,直到追加到sum。

  3.例子

  //自己实现strncpy

  char* my_strncpy(char* p1,const char* p2,int k)

  断言(P1 p2);

  int a=0;

  char * p3=p1

  for(a=0;答答)

  if (*p2==\0 )

  while (a k (*p1=\0 ))

  返回P3;

  } * p1=* p2

  返回P3;

  int main()

  char arr 1[30]= zhangyanshu ;

  char arr2[]=爱;

  int k=0;

  扫描文件( %d ,

  char* p=my_strncpy(arr1,arr2,k);

  printf(%s\n ,p);

  返回0;

  }

  6.strncat

  char strncat ( char destination,const char * source,size _ t num);

  1.从字符串中追加字符

  2.将源的第一个字符追加到目标,并终止空字符。

  3.如果源中C字符串的长度小于num,则只复制空字符终止之前的内容。

  4.实现strncat(类似于库函数)

  //自己实现strncat

  char* my_strncat(char* p1,const char* p2,unsigned int k)

  char * p3=p1

  断言(P1 p2);

  while(* P1);

  -P1;

  while (k - (*p1=*p2))

  if (*p1==\0 )

  返回P3;

  * p1= \ 0

  返回P3;

  int main()

  char arr1[30]=我爱你;

  char arr 2[]= zhangyanshu ;

  int k=0;

  扫描文件( %d ,

  char *ret=my_strncat(arr1,arr2,k);

  printf(%s\n ,ret);

  返回0;

  }

  7.strncmp

  int strncmp ( const char str1,const char str2,size _ t num);

  比较两个字符串的字符。

  比较c字符串str1的数量和c字符串str2的数量。

  这个函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续使用下面的字符对,直到字符不同,直到到达结束空字符,或者直到两个字符串中的数字字符匹配,以先出现的为准。

  例子

  //自己实现strncmp

  int my_strncmp(const char* p1,const char* p2,size_t p)

  断言(P1 p2);

  - p1,-p2;

  while (p - ( *p1==*p2))

  if (*p1!=*p2)

  if (*p1 *p2)

  返回1;

  其他

  return-1;

  返回0;

  int main()

  const char * arr1= abcdef

  const char * arr2= abcdxyz

  int k=0;

  扫描文件( %d ,

  int ret=my_strncmp(arr1,arr2,k);

  if (ret==0)

  printf( equal \ n );

  else if (ret==1)

  Printf(上部字符大于下部字符);

  其他

  Printf(下面的字符大于上面的字符);

  返回0;

  }

  8.strstr

  const char strstr ( const char str1,const char * str 2);

  查找子字符串

  返回指向str1中第一个str2的指针,如果str2不是str1的一部分,则返回空指针。

  匹配过程不包括终止空字符,但它会到此为止。

  例子

  //自行实现strstr要点!

  char* my_strstr(const char* p1,const char* p2)

  断言(P1 p2);

  if (*p2==\0 )

  return(char *)P1;

  const char * m=NULL

  const char * n=NULL

  while (*p1)

  m=p1,n=p2

  而(m n!(* m-*n))//如果减法为0,感叹号为真,继续执行。

  m,n;

  if (*n==\0 )

  return(char *)P1;

  if (*m==\0 )

  返回NULL

  返回NULL

  int main()

  const char * arr1= abc

  const char * arr2= abcdef

  const char* p=my_strstr(arr1,arr 2);

  if (p==NULL)

  Printf(未找到\ n );

  其他

  Printf (Found %s\n ,p);

  返回0;

  }

  9.strtok

  char strtok ( char str,const char *分隔符);

  段落引用

  将字符串拆分成标签

  对这个函数的一系列调用将str分割成标记,这些标记是连续的字符序列,由作为分隔符一部分的任何字符分隔。

  段落引用

  在第一次调用时,这个函数需要一个C字符串作为str的参数,它的第一个字符作为扫描令牌的起始位置。在后续调用中,该函数需要一个空指针,并使用紧接在最后一个标记末尾之后的位置作为扫描的新开始位置。

  段落引用

  为了确定标记的开始和结束,该函数首先从开始位置扫描分隔符中不包含的第一个字符(该字符将成为标记的开始)。然后从令牌的开头扫描分隔符中包含的第一个字符,它将成为令牌的结尾。如果找到结束空字符,扫描也将停止。

  段落引用

  标记的这一端自动替换为一个空字符,标记的开头由函数返回。

  段落引用

  在strtok的调用中找到str的终止空字符后,所有后续对此函数的调用(以空指针作为第一个参数)都将返回空指针。

  段落引用

  找到最后一个标记的点由函数在内部保留,供下一次调用使用(不需要特定的库实现来避免数据争用)。

  使用

  //strtok

  int main()

  char arr[]= w 18602600146 @ 163 . com ;

  char p[]=@ . ;

  char buf[1024]={ 0 };

  strcpy(buf,arr);

  //剪切buf中的字符

  char * ret=NULL

  for (ret=strtok(buf,p);ret!=NULLret=strtok(NULL,p))

  printf(%s ,ret);

  返回0;

  }

  10 .压力

  char * strerror(int errnum);

  错误数量

  打错了。

  返回值

  指向描述错误的错误字符串的指针。

  1.字符分类功能

  字符转换功能

  托洛尔

  将大写字母转换成小写字母。

  如果C是一个大写字母,并且有一个等价的小写字母,则将C转换为它的小写等价字母。如果这种转换是不可能的,返回值是C不变。

  请注意,什么被认为是一个字母可能取决于所使用的地区;在默认的“C”语言环境中,大写字母是以下任意一种:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z,分别翻译为:A B C D E F G H I J K L M O P Q R S T U V W X Y Z。

  在其他语言环境中,如果一个大写字符有多个对应的小写字符,该函数总是为相同的C值返回相同的字符。

  在C #中,这个函数的特定于地区的模板版本(tolower)存在于标题地区中。

  大写

  int toupper(int c);

  将小写字母转换成大写字母

  如果C是小写字母,并且有一个等价的大写字母,则将C转换为它的大写等价字母。如果这种转换是不可能的,返回值是C不变。

  12.memcpy

  块拷贝

  void memcpy ( void destination,const void * source,size _ t num);

  复制内存块

  将num byte值从源指向的位置直接复制到目标指向的内存块中。

  为了避免溢出,目标参数和源参数所指向的数组的大小应该至少为num字节,并且不应该重叠(memmove是重叠内存块的一种更安全的方法)。

  自己实现memcpy。

  #include assert.h

  void* my_memcpy(void* dest,const void* src,size_t p)

  断言(dest src);

  void * arr=dest

  如果(目的地src)

  while (p -)

  *(char *)dest=*(char *)src;

  ((char *)dest);

  ((char *)src);

  while (p -)

  *((char *)dest p)=*(char *)src p);

  int main()

  int arr1[]={ 1,2,3,4,5,6,7,8,9,10 };

  int I=0;

  my_memcpy(arr1,arr1 3,20);

  for(I=0;我我)

  printf(%d ,arr 1[I]);

  返回0;

  }

  13.memcmp

  块比较

  int memcmp ( const void ptr1,const void ptr2,size _ t num);

  比较两个内存块

  将ptr1指向的内存块的第一个num字节数与ptr2指向的第一个字节数进行比较,如果都匹配,则返回零,如果不匹配,则返回一个不为零的值,指示哪个值更大。

  注意,与strcmp不同,这个函数在找到一个空字符后不会停止比较。

  记忆集

  void memset ( void ptr,int value,size _ t num);

  填充内存块

  将ptr指向的内存块的前一个字节数设置为指定值(解释为无符号字符)。

  //内存集

  int main()

  char arr[10]=“”;

  memset(arr, # ,10);

  int I=0;

  for(I=0;我我)

  printf(%c ,arr[I]);

  返回0;

  }

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: