免責聲明:以下代碼取自Derek Banas的YouTube,我只是不明白它爲什麼起作用。通過C中的函數更改字符串
在下面的代碼中,即使字符串的大小不一樣,整個字符串也會被更改。但我不明白整個字符串在for循環沒有經過所有索引時如何改變。例如,如果oldString的長度是10,newString的大小是5,那麼下面的for循環會改變oldString上的索引0到4(據我所知),但是其餘的字符串被刪除了,而我是不知道如何。我自己測試了代碼,它確實有效。
#include <string.h>
#include <stdio.h>
void editMessageSent(char* message, int size){
char newMessage[] = "New Message";
if(size > sizeof(newMessage)){
for(int i = 0; i < sizeof(newMessage); i++){
message[i] = newMessage[i];
}
} else {
printf("New Message is too big\n\n");
}
}
void main(){
// Passing a String to a Function ----
char randomMessage[] = "Edit my function";
printf("Old Message: %s \n\n",
randomMessage);
editMessageSent(randomMessage,
sizeof(randomMessage));
printf("New Message: %s \n\n",
randomMessage);
}
'newMessage'包含隱含的'\ 0'來終止字符串常量。檢查'sizeof(newMessage)'的結果(或者通過調試器中的循環)。 – 2014-10-19 03:02:00