關於C語言,strcpy函式,c語言中strcpy函式幹什麼用的

2022-12-26 13:06:20 字數 3997 閱讀 8724

1樓:匿名使用者

strcpy的第乙個引數是char *型別,也就是乙個字元型別的位址,可以是字元指標,也可以是字元陣列的首位址,因此,你這裡可以傳&piont_1.name[0],也可以傳piont_1.name,然後你再試試看

2樓:付強

strcpy= ??? 這是什麼用法

3樓:

strcpy=(piont_1.name,"hello")

c語言中strcpy函式幹什麼用的

4樓:

將乙個字串的所有元素複製到另乙個字串

5樓:匿名使用者

字串複製。char *strcpy(char *dest,char *src);

用法:#include

功能:把src所指由null結束的字串複製到dest所指的陣列中。

說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。

返回指向dest的指標。

舉例:#include

#include

main()

c語言中strcpy函式怎麼用?看題

6樓:

您好,輸出結果為「a2yz」。

程式**:

分析:

strcpy(a+1,b+2)相當於將a[1]及它後面的內容複製為b[2]及它後面的內容。b[2]及後面為「2」,因此複製後a為「a2」;

strcat(a,c+1)相當於在a的末尾加上c[1]及其後面的部分,也就是「yz」。故執行後a為「a2yz」

拓展資料:

strcpy把從src位址開始且含有'\0'結束符的字串複製到以dest開始的位址空間,返回值的型別為char*。

strcat把src所指向的字串(包括「\0」)複製到dest所指向的字串後面(刪除*dest原來末尾的「\0」)。

7樓:匿名使用者

strcpy(a+1,b+2);

把 b[2]開始的字串拷貝到 a[1]開始的位址中。

這時 a 中的字串改變為 "a2"

然後將 c[1]開始的字串拼接到a 中

此時 a中的字串變為 a2yz;

8樓:匿名使用者

strcpy 將第二個拷貝到第乙個 即拷完以後a為a2\0 注意每個字串最後都有個\0 然後 strcat 後a就是"a2yz"

最終輸出結果為"a2yz"

9樓:黃萱

strcpy(char *, char *)函式表示將第二個引數開始的字串拷貝到第乙個引數的字串位置。故strcpy (a+1, b+2) 表示將b[2]開始的字串複製到a[1]開始的字串中,即a陣列變為「a2」。

strcat(char *, char *)函式表示將第二個引數開始的字串接到第乙個引數開始的字串上,返回第乙個字串的指標。故strcat(a,c+1)表示將c[1]開始的字串接到「a2」後面,a陣列變成「a2yz」。

最後用puts輸出字串。

不懂請追問,望採納。

c語言strcpy的用法。

10樓:

b沒有宣告,而且strcpy函式用錯了,strcpy函式是將後乙個字串複製給前乙個字串。

11樓:愛笑死人了

我搞不清楚你**來的b這個變數。如果問題補充裡的&b[1]是&a[1]的話,a[0]='a'對最後的輸出沒有影響,因為輸出的串位址是從a[1]開始的,都略過a[0]了。

再然後,strcpy是逐字節拷貝的,strcpy(&a[1],a)的時候:

一開始,&a[1]="bcde",a="abcde",第一次拷貝把a的第乙個字元'a'覆蓋了&a[1]的第乙個字元'b',&a[1]變成"acde",但是&a[1]是a的一部分,此時a串變成了"aacde",於是,當拷貝第二個字元時,第二個字元仍然是'a'……到最後,所有拷貝的都是'a'。

12樓:匿名使用者

你看好了:

char a[20] = "abcde"

strcpy(&a[1], a)函式是逐個字元拷貝,首先拷貝第乙個字元,a[0] == 'a';a[1] = a[0]; 即a[1] = 'a';

然後拷貝第二個字元,此時a[1] == 'a'; a[2] = a[1];即a[2] = 'a';

依次類推!!!a[0] = 'a'沒什麼用,其實初始a[0]就等於'a'的!

13樓:匿名使用者

這是典型的源位址與目的位址「重疊」現象,但是很遺撼,c++中的strcpy並沒有為我們解決這一點(它考慮到了),所以這個函式只是按部就班地從源位址複製到目的位址。

基於上述原因,可以看到拷貝一始,源字串已經被「破壞了」,從第二個字元起,它都和前乙個字元相等,這就是結果。所以b[0]決定了最後的拷貝結果。

strcpy的原型

char* strcpy(char* dest,char* src)注意上面while後面的; 號不是多餘的!~

14樓:律瓃水安青

例如:定義乙個字串char

a[20],和乙個字串c="iama

teacher!";

把c複製到a中就可以這樣用:strcpy(a,c);

這個函式包含在標頭檔案

中.程式**:

#include

#include

void

main()

15樓:匿名使用者

請再次確認一下原問題……

c語言 函式strcpy是完全覆蓋嗎?

16樓:

記憶體裡是部分覆蓋了,你看以在檢視記憶體看看。

輸出xyz我認為是因為puts(a);這樣之輸出乙個字串;

覆蓋後陣列a的前三個位元組是xyz,第四位元組是結束標誌\0;

第五位元組開始是dfg,所以你寫puts(&(a[4])); 就可以輸出dfg

c語言中strcpy函式的問題

17樓:匿名使用者

strcpy()函式只能拷貝字串。strcpy()函式將源字串的每個位元組拷貝到目錄字串中,當遇到字串末尾的null字元(\0)時,它會刪去該字元,並結束拷貝

18樓:千鋒教育

strcpy是複製字元陣列執行完後目標陣列arr2被覆蓋

也就是arr2成了"abcde",所以strlen函式返回還是5

19樓:覃寞

char arr2[5] = "hello";這樣是無法通過編譯的,因為最後有乙個\0

應該是arr2[6]

20樓:苦澀無人愛

strcpy(s1,s2)其中s1的長度必須大於s2的,否則記憶體戳穿發生錯誤,其次把s2copy到s1後系統會在後面新增\0,計算長度時仍會考慮複製後的\0

21樓:匿名使用者

怎麼不是'\0',strcpy會把'\0'也複製過來的

22樓:巧純穰子舒

乙個漢字佔2個字元,三個漢字是6個字元,再加上\0,你這個越界了。

而結構體內部元素是順序儲存的,先複製進去

重慶市\0,再複製進去的字串將這個'\0'改成'1',就出現了以上的情況。

關於c語言strcpy函式

23樓:

strcpy(p1,p1++)意思就是將以p1+1位址開頭的字串賦給p1,這樣的話p1這個位置的字元就被擠出去了。

後面p1--是因此現在p1指向的是原來p1+1的位置,還沒有經過判斷,如果沒有這一句,迴圈後p1++,這個位置就跳過了。

關於C語言的bioskey函式,C語言中bioskey 與kbhit 的區別,最好詳細點,謝謝了

函式名 bioskey功 能 直接使用bios服務的鍵盤介面函式原型 int bioskey int cmd 說明 bioskey 的函式原型在bios.h中 bioskey 完成直接鍵盤操作,cmd的值決定執行什麼操作。cmd 0 當cmd是0,bioskey 返回下乙個在鍵盤鍵入的值 它將等待到...

c語言pow函式,C語言pow函式

丿 pow 函式用來求x的y次冪,x y及函式值都是double型 其原型為 double pow double x,double y 例項 如下 include include void main double x 2,y 10 printf f n pow x,y return 0 擴充套件資料...

C語言關於函式傳遞引數問題

好久沒接觸過c了,有些忘了,講講我的理解。int a 10 表示a是乙個指向 int 指標的陣列,它和a 10 10 是一樣的,而和int a中的a性質是一樣的,都是指向int 的指標,但有點區別 int a 10 中 a 位址向前移動10位而int a 中的a 位址移動一位。所以我的結論是 voi...