转自:http://blog.chinaunix.net/uid-24194439-id-90782.html

strcat

  原型:extern char *strcat(char *dest,char *src);

 

  用法:#include <string.h>

 

  功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。

 

  说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

 

  返回指向dest的指针。

 

  举例:

 

  // strcat.c

 

  #include <syslib.h>

 

  #include <string.h>

 

  main()

 

  {

 

  char d[20]="Golden Global";

 

  char *s=" View";

 

  clrscr();

 

  strcat(d,s);

 

  printf("%s",d);

 

  getchar();

 

  return 0;

 

  }

 

  程序执行结果为:

 

  Golden Global View

strcpy

strcpy

 
原型声明:extern char *strcpy(char *dest,char *src);
 

  头文件:string.h

 

  功能:把src所指由NULL结束的字符串复制到dest所指的数组中。

 

  说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

 

  返回指向dest的指针。

 

典型实现

  /**********************

 

  * C语言标准库函数strcpy的一种典型的工业级的最简实现

 

  * 返回值:

 

  * 返回目标串的地址。

 

  * 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。

 

  * 参数:

 

  * strDeatination

 

  *          目标串

 

  * strSource

 

  * 源串

 

  ***********************/

 

  char *strcpy(char *strDestination, const char *strSource);

 

  {

 

  assert(strDestination && strSource);

 

  while(*strDestination++ = *strSource++);

 

  return strDestination;

 

  }

strcmp

  原型:extern int strcmp(char *s1,char * s2);

 

  用法:#include <string.h>

 

  功能:比较字符串s1和s2。

 

  说明:

 

  当s1<s2时,返回值<0

 

  当s1=s2时,返回值=0

 

  当s1>s2时,返回值>0

 

  即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:

 

  "A"<"B" "a">"A" "computer">"compare"

 

  举例:

 

  // strcmp.c

 

  #include <syslib.h>

 

  #include <string.h>

 

  int main()

 

  {

 

  char *s1="Hello, Programmers!";

 

  char *s2="Hello, programmers!";

 

  int r;

 

  clrscr();

 

  r=strcmp(s1,s2);

 

  if(!r)

 

  printf("s1 and s2 are identical");

 

  else

 

  if(r<0)

 

  printf("s1 less than s2");

 

  else

 

  printf("s1 greater than s2");

 

  getchar();

 

  return 0;

 

  }

strlen

  原型:extern unsigned int strlen(char *s);

 

  用法:#include <string.h>

 

  功能:计算字符串s的(unsigned int型)长度

 

  说明:返回s的长度,不包括结束符NULL。

 

  举例

 

  // strlen.c

 

  #include <syslib.h>

 

  #include <string.h>

 

  main()

 

  {

 

  char *s="Golden Global View";

 

  clrscr();

 

  printf("%s has %d chars",s,strlen(s));

 

  getchar();

 

  return 0;

 

  }

 

  下面给大家提供几种实现strlen函数的源代码,供大家参考:

 

  -------------------------------------------------1:start------------------------------------

 

  #include <stdio.h>

 

  #include <assert.h>

 

  typedef unsigned int u_int;

 

  u_int Mystrlen(const char *str)

 

  {

 

  u_int i;

 

  assert(str != NULL);

 

  for (i = 0; str != '\0'; i++);

 

  return i;

 

  }

 

  ------------------------------------------------1:end--------------------------------------

 

  -------------------------------------------------2:start--------------------------------------

 

  int strlen(const char *str)

 

  {

 

  assert(str != NULL);

 

  int len = 0;

 

  while((*str++) != '\0')

 

  len++;

 

  return len;

 

  }http://baike.baidu.com/edit/id=736226

 

  ------------------------------------------------2:end ------------------------------------------

 

  ------------------------------------------------3:start------------------------------------------

 

  int strlen(const char *str)

 

  {

 

  assert(str);

 

  const char *p = str;

 

  while(*p++!=NULL);

 

  return p - str - 1;

 

  }

 

  -------------------------------------------------4:end-----------------------------------------

 

  -------------------------------------------------5:start----------------------------------------

 

  int strlen(const char *str)

 

  {

 

  assert(str);

 

  const char *p = str;

 

  while(*p++);

 

  return p - str - 1;

 

  }

 

  -----------------------------------------------6:end----------------------------------------

 

  简单的总结一下:

 

  以上各种实现的方式都是大同小异的,有的用的是变量,有的用的是指针。

 

  其中,最后一个用的是递归的方式。其实,在实现库函数的时候,是规定不可以

 

  调用其他的库函数的,这里只是给大家一个方法,不用变量就可以实现strlen。

转:strcat与strcpy与strcmp与strlen的更多相关文章

  1. C 自己实现strcpy,strcmp,strlen,strcat等函数

    // mystrlen() 测试字符长度方法 int mystrlen(char *str) { int cnt = 0; char *p= str; while(*p++ != '\0') { cn ...

  2. 不使用库函数、自己编写的(strlen、strcpy、strcmp、strcat、memcmp、memcpy、memmove)

    不使用库函数.自己编写的(strlen.strcpy.strcmp.strcat.memcmp.memcpy.memmove) //求字符串长度的函数 int my_strlen(const char ...

  3. 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...

  4. 逆向 string.h 函数库 memset、strcpy、strcmp 函数

    memset 函数 函数原型:void *memset(void *str, int c, size_t n) 主要功能:复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符 ...

  5. Linux C 字符串函数 strlen()、strcat()、strncat()、strcmp()、strncmp()、strcpy()、strncpy() 详解

      strlen(返回字符串长度) 表头文件 #include <string.h> 定义函数 size_t strlen(const char *s); 函数说明 strlen()用来计 ...

  6. strlen、strcmp、strcat、strcpy、memcpy基础函数的实现

    最近实习+投简历+琐事弄得自己忙的不行不行的,终于今天可以开始记录一些东西了... 1.strlen函数的实现 int strlen(const char *str){ assert(str!=NUL ...

  7. c语言中几个常见的库函数strlen、strcmp、strcat、strcpy、strncpy、memset、memcpy、memmove、mmap

    1.strlen() 1)计算给定字符串的长度,不包括’\0’在内 unsigned int strlen(const char *s) { assert(NULL != s);//如果条件不满足,则 ...

  8. strcpy,strlen, strcat, strcmp函数,strlen函数和sizeof的区别

    //计算字符串实际长度        //strlen()函数:当遇到'\0'时,计算结束,'\0'不计入长度之内,如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0 ...

  9. strcpy、strncpy、strlen、memcpy、memset、strcat、strncat、strcmp、strncmp,strchr

    1.strcpy #include<stdio.h> #include<assert.h> char *mystrcpy(char *dest, const char *src ...

随机推荐

  1. YTU 3003: 括号匹配(栈和队列)

    3003: 括号匹配(栈和队列) 时间限制: 1 Sec  内存限制: 128 MB 提交: 2  解决: 2 [提交][状态][讨论版] 题目描述 假设一个表达式中只允许包含三种括号:圆括号&quo ...

  2. Ugly Numbers

    Ugly Numbers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21918 Accepted: 9788 Descrip ...

  3. RANSAC和Flitline

    [blog算法原理]RANSAC和FitLine ​ 如果已经有一系列图片,需要拟合出最为合适的一条直线出来,这个时候你会选择RANSAC还是FitLine. 一.算法定义: RANSAC是实际运用非 ...

  4. easyui commbox嵌入一个checkbox的实现

    function InitComBoBox(datagrid, combxid, formid, url, valueField, textField,_prompt) { $(combxid).co ...

  5. 2016年10月20日 星期四 --出埃及记 Exodus 19:4

    2016年10月20日 星期四 --出埃及记 Exodus 19:4 `You yourselves have seen what I did to Egypt, and how I carried ...

  6. 2016年10月12日 星期三 --出埃及记 Exodus 18:23

    2016年10月12日 星期三 --出埃及记 Exodus 18:23 If you do this and God so commands, you will be able to stand th ...

  7. shell中sed用法

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  8. 微信网页获取openId

    <%@ WebHandler Language="C#" Class="UserAuth" %> public class UserAuth : I ...

  9. Set Font Properties On Mouse Hover Of Push Button And Text Items At Run time In Oracle Forms

    Change the font size and weight of text items and push buttons on mouse hover in Oracle Forms.   An ...

  10. [HDOJ5791]Two(DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5791 题意:给两个数列,求有多少个公共子序列. dp(i,j)表示a1~ai和b1~bj的公共子序列个 ...