在這裏,在這個示例程序來說明strcpy()
這種行爲,我寫了一個字符串"S"
成一個更大的字符串previous
其原來有"Delaware"
。但這僅覆蓋影響原始字符串的原始string.The休息前兩個字符繼續具有相同的值。如何處理這個問題? (即使memcpy()
似乎也可能具有相同的行爲)。我的意思是,如何將其餘字符轉換爲0
?或者字符串中保留其原始值的其餘字符沒有副作用?將一個小字符串的strcpy()放入一個更大的字符串中,將剩下的更大的字符串保持不變。如何處理它?
#include<stdio.h>
#include<string.h>
int main()
{
char previous[10]="Delaware";
printf("The character at position 4 is %c\n",previous[4]);
strcpy(previous,"S");
printf("The character at position 4 later is %c",previous[4]);
}
你爲什麼要把字符串的其餘部分改爲0? – yngccc 2013-05-11 03:31:04
爲什麼會默認這樣做?這是一個字符串函數,字符串無論如何都不關心null終止符後面的內容,所以這只是大部分時間的浪費。 – chris 2013-05-11 03:31:53
'strcpy'也會複製空終止符,所以如果你做了一個'printf(「%s \ n」,前一個);'它只會打印'S',這假定目的地足夠大以容納空終止符。 – 2013-05-11 03:31:56