1樓:Pluto Hades
記憶體重疊的問題。實際上strcpy的實現一般是彙編實現的快速拷貝,一般來說目的位址和源位址是沒有重疊的,你不能想當然的認為演算法實現是允許重疊的。
正經用新位址來存
#include
#include
#include
intmain()
;char*p
=NULL
;while((p
=strsep(&
s,delim
))!=
NULL
)printf
("[t] = %s\n"
,t);return0;}
2樓:
我在Ubuntu16.04上試了一下,結果也不一樣,是:
111122223333445555666666要麼是strcpy不能用於這樣的情況,然而我記得大概是可以的。
不然就是實現有bug。
補充:昨天出現問題的最後呼叫的是__strcpy_ssse3。編譯器版本好像是5.2。
今天又在另一台Ubuntu14.04上試了一下,結果正常。試了兩個編譯器,分別是gcc4.
8和gcc5.2。最後呼叫的都是__strcpy_sse2_unaligned。
3樓:麥大麥
你在printf("[p+1] = %s\n", p + 1);後面加個fflush(stdout);試試看?我的ubantu虛擬機器掛求了,不想裝,你試試。
4樓:
strcpy(p, p + 1);
記憶體不能有重疊吧,有重疊應當用 memmove。
另外,沒看懂題主想問什麼,不如直接說說你期望輸出什麼,實際輸出什麼。
BTW:演算法應當是兩個指標遍歷
#include
intmain
(void)
Ubuntu 下 LaTeX,TeX Live,LyX 等 TeX 軟體哪款更適合 TeX 初學者?
sgmsl 使用 Texmacs 或 Lyx,然後輸出 Latex.Texmacs 的快捷鍵和可定製性不是 Lyx 能比的,但是比 Lyx 簡陋點. 上官小河 如果不是為了學術創作,這些跟ms word 差別其實不大,都能滿足內容的撰寫,思想的表達,但是如果學術上比較講究,來點學術上的高階玩法,就要...
如何優雅地使用 Ubuntu?
Error 前段時間才從Windows轉到Linux,優雅談不上,只能算折騰,自己的第一台電腦用的是Windows,折騰了六年終於報廢。之後六年一台電腦沒碰過。很多東西都忘記了。現在只能從頭學起。現在買了臺遊戲本,我更喜歡叫它重型本。本身就很重,但效能很強悍。再加上電源更笨重了,再加上配套的機甲包,...
Ubuntu下python選擇pip install還是conda install更加合適?
主要是TensorFlow的話用conda會好很多,配置tensorflow gpu,CUDA,cuDNN等只要一行命令。 一根倔強的韭菜 建議用conda,安裝乙個miniconda就行了,用清華或者中科大源,盡量不要在Ubuntu自帶的Python裡面搭環境,容易搞壞系統,即使不用conda也要...