關於strcpy字串拷貝的函式的問題

時間 2022-07-10 07:55:03

1樓:匿名使用者

就原來的str_cpy函式來說,這個函式是沒有錯誤的,只是這個返回值的用途,看你怎麼用了,如果返回送給函式的形參str1原來的值,就要用temp了(個人感覺這種用法是多餘的,不過標準庫裡也是這麼做的),如果要返回已複製的字串的結尾,大可不用temp,直接改str1就可以了,而且有種奇妙的效果:

char buf[256];

str_cpy(str_cpy(buf,"abc"),"def");

執行後buf的值為"abcdef「了

使用*temp = '\0'是必須的,你刪除了沒影響是因為好運(我估計傳入函式的str1指向的是靜態變數,被系統初始化為全0了,並不是每次都這麼好運的。

2樓:冰上游魚

此處必須用一個temp.

char *str_cpy(char *str1,char *str2)

*temp='\0'; //temp最後加個「\0」 ,表示結束

return str1; //str1還是原來的str1,只是被str2覆蓋了

}錯誤**:

char *str_cpy(char *str1,char *str2)

return str1; //str1指向字串的結尾,必然出錯}

3樓:

確實不需要藉助臨時指標,但是*temp='\0';卻是必要的,因為字串的結尾是用一個'\0'做標誌的。

strcpy函式問題

4樓:

不能拷貝,c語言規則,字串字面值(string literal)是常量,就是說字串是存放於**區或只讀資料區。

自定義c語言字串拷貝函式strcpy

5樓:匿名使用者

#include

char* cpystr(char *des, char *res)

int main (void)

6樓:匿名使用者

char* mystrcpy(char* dest, const char* src)

c語言關於strcpy函式的問題

7樓:

前面一句註釋理解是對的。

後面一句不是拷貝指標。strcpy是字串拷貝。這一句是把line指向的字串拷貝到lineptr[last]指向的空間。

line是前面讀取到的一行字元,而lineptr[last]就是指向buffer裡某個位置的p,實際就是把前面讀取到line裡的一行字串拷貝到p所指向的buffer裡某個位置的空間。lineptr是個陣列,儲存每次p的位置。

strcpy函式的作用是複製字串,strcpy(str1,str2)中str2會把str1覆蓋掉

8樓:匿名使用者

為字串複製函式,將字串2複製到字串1例如 char strl[10],str2=;

strcpy(str1,str2);

執行後是str1由變為

就是吧str2中的qwert複製到str1中,但是由於str1有10個長度 所以後面的全是"\0"

需要注意的就是1的長度必須大於2,目的是有足夠的空間容納2的東西;

另外1必須是陣列名的形勢,2可以是陣列名 也可以是字串長量;其餘的注意事項可以看c語言那本書 很全的;

是的,字串結尾程式會自動加 結束符 '\0』

strcpy複製時,會把末尾的'\0』也給複製進去,且覆蓋一個字元。

例如:main()

列印出:

x|y|z| |1|2|3|4|9| |

可以看出,z後面那個字元覆蓋了。

如果用printf("%s",s1); 輸出,程式只列印出 xyz, 因為下一個是字串結束符,結束符以後的12349 儘管還在s1裡,但不再考慮。

(**)

9樓:太原大海

只覆蓋str2字串包括\0長度

c語言之不使用strcpy()函式實現字串複製功能

10樓:匿名使用者

輸出一個字元用的格式是%c,輸出他的ascii值的格式是%d

else

這裡的%d改為%c即可。

c語言中如何像用函式strcpy複製字串一樣複製數字,如複製30。 10

11樓:

int a = 30;

int b;

b = a;           //這是不是你要的複製數字//如果是複製陣列,則用一個迴圈就可以

for(int i=0;i<_count;i++)        //_count是陣列數目

12樓:清河大俠

寫一個函式即可。比如,可以寫如下的一個函式:

int intncpy(int *des, int *src, int len)

return 0;

}說明:

為了適合大多數情況,不方便像strcpy()一樣,用「\0」自動判別字串結尾。因此用類似於strncpy()定長度的方式,進行數字拷貝。

其它數字型別,比如float, double, 都可以按照類似的方式,編制對應的ncpy()程式。

可以繼續交流,謝謝。

13樓:匿名使用者

如果是數字就直接賦值,例如int num=30;

如果是「30」,那麼還是使用strcpy

14樓:匿名使用者

char *strcpy(char *dest,const char *src)

15樓:匿名使用者

數字直接賦值就可以了

關於字串指標的問題

如果是指標,你迴圈拷貝的時候是修改指標記憶體的資料指標指向的是常量字串,這就間接地修改了常量,常量是禁止修改的,所以程式會掛掉 陣列是新分配記憶體,拷貝了一份常量。是在自己記憶體改的,沒改常量 字元可以直接賦值,字元竄不能直接賦值。char str1 i love xml 這個語法上是不行的。上面的...

字元陣列和字串的區別,請問字串和字元陣列的區別是什麼

字元陣列沒有結束標誌 0 而字串則在末尾有結束標誌 0 在c中,字串就是末尾有字串結束標誌 0 的字元陣列。如果用gets 輸入,則會自動在末尾加上結束標誌 0 c語言中應該是沒有字串這種資料型別的,它只有字元型別,字串也就是字元陣列。不過gets 可以用來接受字串,但它需要提供字串的指標。子函式在...

如果字串字元是0,則除掉該字串的字元PHP寫法

你好,這裡主要考察substr 這個函式的用法 先把lz想要的效果 寫出來 str 0111101ffffffff12090 str 222ffff0f0 str1 substr str,0,1 對 str字串從索引為0 就是字串的第一個位置 開始擷取並且取一個字元 判斷首字元 echo str1 ...