幫忙看一下這個c程序輸出結果,謝謝

時間 2022-09-10 20:00:13

1樓:匿名使用者

strcpy的引數解釋(msdn)

char *strcpy(

char *strdestination,

const char *strsource

);strdestination:destination string.

strsource:null-terminated source string.

當宣告:

char strlist[3][5]=;

實際上三個字串strlist[0]到strlist[2],是連續存放的。

當strcpy(strlist[1],"write--");

按"write--"全數拷到了strlist[1]及其後的兩個位元組。

雖然strlist[1]只有5個字元長,但strlist[1]只是代表著字串1的起址。倘若註釋掉隨後的語句,只printf("%s",strlist[1]),可以看到輸出

"write--",因為字串的結束是以遇到'\0'為條件。

當strcpy(strlist[2],"here");

strlist[1]的串結束點為strlist[2]的串結束點。

此時:strlist[1]="writehere\0";

strlist[2]="here\0";

實際上,在vs2005裡,越界的strcpy會被編譯器指示出來,它會提示使用strcpy_s代替。

2樓:匿名使用者

首先,二維陣列的儲存方式也是連續的,char strlist[3][5]=; 在棧中是一塊15位元組的連續空間,相當於char strlist[15],索引的方式是a[m][n] = a[m * n + n](從0開始)。然後,strcpy是從源字串開始向目的複製,直到'\0',strcpy(strlist[1],"write--");把那塊空間的第5到12位元組賦值為"write--0",strcpy(strlist[2],"here");

把第10到14位元組賦值為"here0",這裡將之前的"--"覆蓋掉了,這時陣列strlist的狀態應該是(字元):

00000writehere0

最後,格式%s是輸出到'\0','\0'實際上就是0啦,和空格是不一樣的,那麼strlist[0]從strlist的開頭輸出,就會什麼都不輸出

strlist[1]會從第5個位元組開始輸出,是writeherestrlist[2]會從第10個位元組開始輸出,是here

3樓:神之雷藏

偶然發現這個問題

在vc裡編譯除錯了一下 也被搞迷糊了

執行strcpy(strlist[1],"write--"); 時strlist[1]的值是write--

strlist[2]的值是--

在執行到strcpy(strlist[2],"here"); 時strlist[1]的值是whiteherestrlist[2]的值是here

最後輸出是strlist[0]是不輸出什麼的 所以輸出的是whiteherehere

關鍵就是執行到第二個strcpy的地方,為什麼會影響到strlist[1]的值呢?我會繼續關注這個問題

lz有什麼結果的話 貼出來

看了下面兩位的介紹我明白多了

4樓:匿名使用者

write-- 長度越界了。

陣列指標越界導致堆疊中其他變數內容被改變。strcpy用的時候,目標字串的空間必須大於等於原字串的空間的,不然可能不是你想要的結果。

5樓:匿名使用者

後面的here不應該有的啊

後一個問題.什麼都不輸出

幫忙看一下這個配置,幫忙看一下這個配置?

1 如果你預算不差那麼幾十 主機板換映泰 nf520 a2 東西做的好很多 2 你配置寫的太簡單 cpu 應該是雙核 4000 硬碟串列埠是盒裝還是散裝?具體型號如何。不同型號單片碟片容量不同,效能壽命有所差異。記憶體究竟是ddr2 667 還是 ddr2 800電源航嘉300w額定的有很度款,差異...

幫忙看一下這個是真的麼,幫忙看一下,幫我查一下,這個是真是假?

詮釋那一天 樓主你好,這款鞋我也有,我是低幫的。光看 走線色澤都還是不錯的,但是我要說一句,就現在而言,空軍和aj都是可以被模仿的,現在的莆田貨和真的已經沒有區別了。就這款鞋而論,只要假鞋 超五百,你就不用擔心真假,覺得分不出來。僅供參考 憑 是看不出真假的,買才是真假辨別最直接方式。莆田鞋高仿得和...

請幫忙看一下這個配置

cpu有條件的話 直接上q9550 效能和超頻更合適顯示卡建議直接上9800gtx 現在索泰和映眾 以及影弛的這個型號都很有優勢 主機板的話 要看你個人喜好了 個人建議搭配q9系列的四核應該搭配p5q d這款 記憶體的話 建議用金邦的黑龍 2g ddr800 x2套裝電源 建議額定450w起步 建議...