c語言 strcpy原型,淺談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++;

}

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

#include

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

#include

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

#include

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

#include

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函數原型就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。

時間: 2017-04-07

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257354.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257354.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257354.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

angular——更多按鈕的上拉菜單(路由跳轉)

<button class"btn gray_text_btn list_item" ng-click"action.toMoreOptions()"><i class"icon ion-navicon"></i> </button> <!-------------------- 底部按鈕 -----------------------><section class&qu…

Python版——博客網站四 編寫日志創建頁

2019獨角獸企業重金招聘Python工程師標準>>> 開源地址&#xff1a;https://github.com/leebingbin/Python3.WebAPP.Blog 單從編碼來說&#xff0c;WebApp開發真正困難的地方在于編寫前端頁面。前端頁面需要混合HTML、CSS和JavaScript&#xff0c;如果對這三者沒有深…

c語言0-1勻分布隨機數,C++ generate_canonical均勻分布隨機數函數用法詳解

標準均勻分布是一個在范圍 [0&#xff0c;1) 內的連續分布。generate_canonical() 函數模板會提供一個浮點值范圍在 [0&#xff0c;1) 內&#xff0c;且有給定的隨機比特數的標準均勻分布。它有 3 個模板參數&#xff1a;浮點類型、尾數的隨機比特的個數&#xff0c;以及使用的…

第三十四天 how can I 堅持

“不要把所有的雞蛋放在同一個籃子里”是錯誤的&#xff0c;投資應該像馬克吐溫說的那樣&#xff0c;要把所有的雞蛋放在同一籃子里&#xff0c;并小心的看好他。---巴菲特。 那盆花還沒死&#xff0c;但是我又能做什么呢&#xff1f;技術。永遠的技術。睡覺。轉載于:https://w…

01-Swift 介紹

簡介 Swift 語言由蘋果公司在 2014 年推出&#xff0c;用來撰寫 OS X 和 iOS 應用程序2014 年&#xff0c;在 Apple WWDC 發布 幾家歡喜,幾家愁愁者:只學Object-C的人歡喜者:之前做過java/python/js語言的人歷史 2010 年 7 月&#xff0c;蘋果開發者工具部門總監 Chris Lattner…

2017—2018 實驗報告:實驗一

實驗一&#xff1a;實驗報告 課程&#xff1a;程序設計與數據結構 班級&#xff1a; 1623 姓名&#xff1a; 張旭升 學號&#xff1a;20162329 指導教師&#xff1a;婁嘉鵬 王志強 實驗日期&#xff1a;9月25日 實驗密級&#xff1a; 非密級 預習程度&#xff1a; 已預習 必修/…

病床呼叫系統有顯示屏c語言,病床呼叫系統畢業設計

內容介紹完整版大學病床呼叫系統畢業設計&#xff0c;已修改完格式摘 要醫院已經從人工管理模式向智能化方向發展。“病床呼叫系統”可以實現對病房的智能化管理&#xff0c;可實現呼叫、求救警報、信息存儲、顯示等等功能。患者在住院期間&#xff0c;可能會在任意時間請求醫…

1. mybatis批量插入數據

通過list <insert id"saveByList" useGeneratedKeys"true" parameterType"java.util.List"> insert into T_App_Default_User(UserID,AppType,CreateTime)values <foreach collection"list" item"item" index&quo…

iOS開發 - Swift實現清除緩存功能

前言: 開發移動應用時&#xff0c;請求網絡資源是再常見不過的功能。如果每次都去請求&#xff0c;不但浪費時間&#xff0c;用戶體驗也會變差&#xff0c;所以移動應用都會做離線緩存處理&#xff0c;其中已圖片緩存最為常見。 但是時間長了&#xff0c;離線緩存會占用大量的…

c語言結構體單元測試,C語言結構體單元練習.doc

C語言結構體單元練習1.有以下定義和語句&#xff1a;struct student{ int age;int num; };struct student stu[3]{{1001,20},{1002,19},{1003,21}};main(){ struct student *p;pstu;…… }則以下不正確的引用是 。A) (p)->num B) p C) (*p).num D) p&stu.age2.有以下結構…

如何開啟IIS7以上的“IIS6管理兼容性”

護衛神PHP套件的安裝&#xff0c;需要開啟“IIS6管理兼容性”&#xff0c; 那么&#xff0c;如何開啟IIS7、IIS7.5、IIS8.0的IIS6兼容模式呢&#xff1f; 設置的時候&#xff0c;請參照如下截圖&#xff1a; 本文轉自黃聰博客園博客&#xff0c;原文鏈接&#xff1a;http://www…

pop to 特定的UIViewController

1. 我們可以推出到特定的UIViewController 2. 有一個類沒有navigationController&#xff0c;以前一般用delegate&#xff0c;我覺得我們可以把引用一個navigationController&#xff0c;然后使用它來推出另一個UIViewController轉載于:https://www.cnblogs.com/studyNT/p/4486…

藍橋杯:矩陣翻硬幣

題目地址&#xff1a;http://lx.lanqiao.org/problem.page?gpidT126 這道題強烈建議用java做&#xff0c;畢竟自帶BigInteger類。 此題看似是一道模擬題&#xff0c;但由于數據規模很大&#xff08;10的1000次方&#xff09;&#xff0c;只能找規律。規律是最終結果為sqrt(n)*…

ssh服務端口轉發詳解

端口轉發的概念和應用什么是端口轉發呢&#xff0c;我們知道&#xff0c;SSH 會自動加密和解密所有 SSH 客戶端與服務端之間的網絡數據。但是&#xff0c;SSH 還同時提供了一個非常有用的功能&#xff0c;這就是端口轉發。它能夠將其他 TCP 端口的網絡數據通過 SSH 鏈接來轉發&…

W ndoWs文件夾窗口,如何在本地網絡中訪問-Synology-NAS-上的文件-(Wndows).pdf

如何在本地網絡中訪問-Synology-NAS-上的文件-(Wndows)如何在本地網絡中訪問 Synology NAS 上的文件 (Windows)概述Synology NAS 經過專門設計&#xff0c;可快速簡單地在本地網絡中存儲和共享文件&#xff0c;讓您直接訪問 SynologyNAS 上的文件而沒有每次登錄 DSM 的麻煩。例…

左移與右移

左移 無論被移動的數是有符號還是無符號&#xff0c;左移一位相當于乘2(在不溢出的情形下) 右移 對于無符號數&#xff0c;右移一位相當于除以2&#xff1b; 對于有符號數&#xff0c;如果還想獲得同樣右移除以2的效果&#xff0c;就要考慮算數右移&#xff0c;即符號位始終不變…

Serializing Lua objects into Lua Code

The following little snippet allows you to ‘pickle’ Lua objects directly into Lua code (with the exception of functions, which are serialized as raw bytecode). Metatable support is on the way, but for now, it should be useful enough. Example code: view s…

布局管理器android,Android課程---布局管理器之相對布局(一)

下面示例的是在父容器里如何設置按鈕的位置&#xff0c;難度&#xff1a;***&#xff0c;重點是找到一個主按鈕&#xff0c;設置它的id&#xff0c;然后根據它來設置其他按鈕在父容器的位置。代碼示例&#xff1a;android:layout_width"match_parent"android:layout_…

【Cocos2d-Js基礎教學 入門目錄】

本教程視地址頻在&#xff1a;九秒課堂 完全免費從接觸Cocos2dx-Js以來&#xff0c;它的綻放的絢麗讓我無法不對它喜歡。我覺得Js在不斷帶給我們驚喜&#xff1b;在開發過程中&#xff0c;會大大提升我們對原型開發的利用率&#xff0c;使用Js語言做游戲開發&#xff0c;使游戲…

Hammer.js移動端觸屏框架的使用

hammer.js是一個多點觸摸手勢庫&#xff0c;能夠為網頁加入Tap、Double Tap、Swipe、Hold、Pinch、Drag等多點觸摸事件&#xff0c;免去自己監聽底層touchstart、touchmove、touchend事件并且寫一大堆判斷邏輯的痛苦。hammer.js不但支持觸摸屏設備的瀏覽器&#xff0c;在桌面瀏…