寫出完整版的strcpy函式

2021-08-17 21:50:00 字數 1310 閱讀 6419

此題為字串的複製函式,自己書寫測試**和strcpy函式如下,測試環境(ubuntu):

#include 

void

strcpy(char *strdest, const

char *strsrc);

int main()

void

strcpy(char *strdest, const

char *strsrc)

測試結果報錯:發生段錯誤,通過addr2line定位到while ((*strdest++ = *strsrc++) != '\0');這一行**。

開始一直以為是這一行**書寫錯誤,將其分步改寫,**如下:

do

while (*strsrc != '\0');

然後除錯,還是發生了段錯誤,繼續使用addr2line定位到*strdest = *strsrc;這一行**。然後將**copy到vs2015上調式,列印錯誤資訊:unhandled exception thrown: write access violation,即寫訪問衝突,因此懷疑是賦值時出現異常。仔細檢視測試**,發現定義的str1為字串字面量,其記憶體位址儲存在唯讀儲存區不能作為左值使用。修改char str1[10] = "";,然後測試後通過。具體**如下:

#include 

void

strcpy(char *strdest, const

char *strsrc);

int main()

void

strcpy(char *strdest, const

char *strsrc)

檢視示例**,完善strcpy函式:

#include 

#include

char* strcpy(char *strdest, const

char *strsrc);

int main()

char* strcpy(char *strdest, const

char *strsrc)

mysql完整版 MYSQL安裝(完整版)

一 完全解除安裝mysql yum remove mysql mysql server mysql libs compat mysql51 rm rf var lib mysql rm etc my.cnf 檢視是否還有mysql軟體 rpm qa grep mysql 如果存在的話,繼續刪除即可。...

php完整版,ThinkPHP5 0完整版

thinkphp5.0版本是乙個顛覆和重構版本,官方團隊歷時十月,傾注了大量的時間和精力,採用全新的架構思想,引入了更多的php新特性,優化了核心,減少了依賴,實現了真正的惰性載入,支援composer,並針對api開發做了大量的優化,包括路由 日誌 異常 模型 資料庫 模板引擎和驗證等模組都已經重...

JS完整版原型鏈剖析之完整版

爭對上兩篇遺留的問題建構函式和object建構函式 proto 屬性執行的問題,我們可以分析出最終他們的原型鏈 即物件原型的物件原型 最後肯定會執行null不然就會一直指向下去 建構函式和object建構函式指向的同乙個原型物件 function建構函式的原型物件 而這個原型物件的 proto 屬性...