C語言stringcopy()的底層實現

C 程序設計:字符串復制
服務器君一共花費了228.521 ms進行了6次數據庫查詢,努力地為您提供了這個頁面。
試試閱讀模式?希望聽取您的建議

字符串常量實際上是個字符數組,比如 welcome to www.snpmgr.live 就是個字符數組,并且以 '\0' 結尾。

字符串串常量的一個常見的用法就是作為函數參數,比如常見的 printf("welcome to www.snpmgr.live"); 字符串參數實際上是通過字符指針訪問該字符串的。這里的 printf() 函數接受的是一個指向字符數組第一個字符的指針。字符串常量是可以通過指向其第一個元素的指針來訪問的。

下面程序中的函數 stringcopy(char *source, char *target) 實現的功能是,把指針 target 指向的字符串復制到指針 source 指向的位置。

#include <stdio.h>
void stringcopy(char *source, char *target);
int main()
{
	char str_a[] = "Welcome to www.snpmgr.live";
	char str_b[] = "";
	int wait;
	printf("str_a為 %s \n", str_a);
	printf("str_b為 %s \n", str_b);
	stringcopy(str_b, str_a);
	
	printf("調用函數后 \n");
	printf("str_a為 %s \n", str_a);
	printf("str_b為 %s \n", str_b);
	scanf("%d", &wait);
}
void stringcopy(char *source, char *target)
{
	int i;
	i = 0;
	while((source[i] = target[i]) != '\0')
		i++;
}

程序運行結果:

str_a為 Welcome to www.snpmgr.live
str_b為
調用函數后
str_a為 o www.snpmgr.live
str_b為 Welcome to www.snpmgr.live

因為參數是通過值傳遞的,source 和 target 在循環中每執行一次,它們就沿著相應的數組前進一個字符,直到將 targrt 中的結束符 '\0' 復制到 source 為止。

經驗豐富的程序員則喜歡像下面那樣寫:

void stringcopy(char *source, char *target)
{
	while((*source++ = *target++) != '\0')
		;
}

在這個函數中,source 和 target 的自增運算放到了循環的測試部分。

可以進一步精煉程序,表達式同 '\0' 的比較是多余的,只需要判斷表達式的值是否為0即可。

void stringcopy(char *source, char *target)
{
	while(*source++ = *target++)
		;
}

這樣的寫法看起來不容易理解,但這種寫法是有其好處,C語言程序經常采用這種寫法。

本文地址:http://www.snpmgr.live/librarys/veda/detail/484,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.snpmgr.live/librarys/veda/detail/484

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏。

大家都在看

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《計算機程序的構造和解釋(原書第2版)》 艾伯森 (譯者), 裘宗燕 (譯者), 等 (譯者)

《計算機程序的構造和解釋》(原書第2版)1984年出版,成型于美國麻省理工學院(MIT)多年使用的一本教材,1996年修訂為第2版。在過去的二十多年里,《計算機程序的構造和解釋》(原書第2版)對于計算機科學的教育計劃產生了深刻的影響。第2版中大部分重要程序設計系統都重新修改并做過測試,包括各種解釋器和編譯器。作者根據其后十余年的教學實踐,還對其他許多細節做了相應的修改?!队嬎銠C程序的構造和解釋》(原書第2版)自出版以來,世界各地已有100多所院校采用《計算機程序的構造和解釋》(原書第2版)做教材,其中包括美國斯坦福大學、美國普林斯頓大學、英國牛津大學、日本東京大學等。

更多計算機寶庫...

燃烧吧足球登陆 股票配资平台个人代理 宝莱特股票 天狼50股票分析软件 22选5 股票开盘时间 安徽25选5 新疆35选7 什么是股票融资贷款 2012奥运会足球直播 临沂股票配资的利息 理财平台 中国期货配资公司 11选5 广西快乐双彩 e球彩 极速11选5