2014-02-11 28 views
0

這是一個簡單的問題,但我無法弄清楚。我一直在試圖讓一個方法,通過它的內容的一部分一樣,將「他是一個男孩」到「是個男孩」如下,以取代一個字符串的內容:如何修改C中單個字符串的內容?

int main() { 
    char array[] = "he is a boy"; 
    strcpy(array, &array[3]); 
    printf("%s\n", array); 
} 

但程序公正停在strcpy聲明。 使用strcpy或任何其他方法來實現相同的目的是否有任何問題? 順便說一句,我在我的Mac上使用X代碼。 Thx〜

+1

請避免的strcpy和instad使用strncpy()函數。請參閱http://stackoverflow.com/questions/1258550/why-should-you-use-strncpy-instead-of-strcpy – Lesto

回答

3

是的,當源和目標重疊時,不能使用strcpy()。這是在手冊中明確指出:

的字符串可能不重疊,目的串dest中必須足夠大,接收拷貝。

您可以使用memmove(),但你必須指定長度,可能處理終端發出自己,因爲它是一個通用的記憶操縱功能,而不能用於字符串專門設計。

在你的情況,因爲你複製的尾部,我們可以只包括終端和罰款:

int main(void) { 
    char array[] = "he is a boy"; 
    memmove(array, array + 3, 9); 
    printf("%s\n", array); 
    return 0; 
} 
+0

Thx〜它對我來說非常合適。 –