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...