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