国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

淺談C語言中strcpy,strcmp,strlen,strcat函數原型

2020-05-23 13:47:43
字體:
來源:轉載
供稿:網友

實例如下:

//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++;  }  return res;}//strcpy(dest,src)把從src地址開始且含有null結束符的字符串復制到以dest開始的地址空間char *strcpy(char *strDest, const char *strSrc){  char *res=strDest;  assert((strDest!=NULL)&&(strSrc!=NULL));  while((*strDest=*strSrc)!='/0')  {    strDest++;    strSrc++;  }  return res;}

今天去文思創新面試,考官問了我一個簡單的實現,即:自己編寫strcpm的實現,IBM曾經也考過寫strcpy原型,這幾個函數在面試的時候經常被考到,很具有代表性,突然被問起還真有點措手不及呢。現在記下供大家學習和以后溫習:(下面的程序經本人通過)

1、Strcat函數原型如下:

char *strcat(char *strDest, const char *strScr) //將源字符串加const,表明其為輸入參數{    char * address = strDest;       //該語句若放在assert之后,編譯出錯    assert((strDest != NULL) && (strScr != NULL)); //對源地址和目的地址加非0斷言    while(*strDest)       //是while(*strDest!='/0')的簡化形式    {            //若使用while(*strDest++),則會出錯,因為++是不受循環       strDest++;        //約束的。所以要在循環體內++;因為要是*strDest最后指    }            //向該字符串的結束標志'/0'。    while(*strDest++ = *strScr++)     {       NULL;         //該循環條件內可以用++,    }             //此處可以加語句*strDest='/0';有無必要?return address;        //為了實現鏈式操作,將目的地址返回}

以下是在VC6.0中調試的例子,函數名用strcata代替。

#include <stdio.h>#include <assert.h>char *strcata(char *strDest,const char *strScr){    char * address = strDest;    assert((strDest != NULL) && (strScr != NULL));    while(*strDest)    {       strDest++;    }    while(*strDest++ = *strScr++)    {       NULL;    }    return address;}void main(){    char str1[100]={"i love"};    char str2[50]={"China"};    printf("%s/n",strcata(str1,str2));}

2、Strcpy函數原型如下:

char *strcpy(char *strDest, const char *strScr){    char *address=strDest;    assert((strDest != NULL) && (strScr != NULL));    while(*strScr)          //是while(*strScr != '/0')的簡化形式;    {       *strDest++ = *strScr++;    }    *strDest = '/0';            //當strScr字符串長度小于原strDest字符串長度    return address;           //時,如果沒有改語句,就會出錯了。}

以下是在VC6.0中調試的例子,函數名用strcpya代替。

#include <stdio.h>#include <assert.h>char *strcpya(char *strDest, const char *strScr){    char *address = strDest;    assert((strDest != NULL) && (strScr != NULL));    while(*strScr)    {       *strDest++ = *strScr++;    }    *strDest = '/0';    return address;}void main(){    char str1[100]={"i love"};    char str2[50]={"China"};    printf("%s/n",strcpya(str1,str2));}

3、Strcmp函數原型如下:

int strcmp (const char *str1,const char *str2){          int len = 0;    assert((str1 != '/0') && (str2 != '/0'));    while(*str1 && *str2 && (*str1 == *str2))    {       str1++;       str2++;    }    return *str1-*str2;}

以下是在VC6.0中調試的例子,函數名用strcmpa代替。

#include <stdio.h>#include <assert.h>int strcmpa (const char *str1,const char *str2){          int len = 0;    assert((str1 != '/0') && (str2 != '/0'));    while(*str1 && *str2 && (*str1==*str2))    {       str1++;       str2++;    }    return *str1-*str2;}void main(){    char str1[100] = {"i love"};    char str2[50] = {"China "};    printf("%d/n",strcmpa(str1,str2));}

4、Strlen函數原型如下:

int strlen(const char *str){  int len = 0;    assert(str != NULL);    while(*str++)    {       len++;    }    return len;}

以下是在VC6.0中調試的例子,函數名用strlena代替。

#include <stdio.h>#include <assert.h>int strlena(const char *str){  int len = 0;    assert(str != NULL);    while(*str++)    {       len++;    }    return len;}void main(){    char str1[100] = {"i love"};    char str2[50] = {"China "};    printf("%d/n",strlena(str1));}

以上這篇淺談C語言中strcpy,strcmp,strlen,strcat函數原型就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柏乡县| 虹口区| 长治市| 武城县| 安西县| 中宁县| 读书| 桃江县| 长春市| 观塘区| 开化县| 东辽县| 东方市| 理塘县| 门头沟区| 孟津县| 梁山县| 许昌县| 建湖县| 平谷区| 丰顺县| 北流市| 嘉善县| 灵台县| 商城县| 庆城县| 安达市| 饶河县| 甘肃省| 丹东市| 郑州市| 延安市| 通榆县| 衡南县| 邵阳县| 焉耆| 马山县| 卫辉市| 阳江市| 黔南| 绥中县|