我想知道如果你能幫我解決C字符串問題,我不太明白。我有一個函數,我發送3個字符指針。在這個函數中,char指針被正確地移位和修改。但是,當我返回到它們被調用的主函數時,所述函數不會改變。我過去的價值是錯誤的嗎?下面是我的代碼示例:在C中傳遞和修改char指針之間的混淆(參考與值)
int main(void)
{
LPSTR path = (char*)malloc(strlen(START_PATH));
strcpy(path, START_PATH);
char* newstr = (char*)malloc(PATH_SIZE);
TrimVal(path, "*.*", newstr);
//Do Stuff
return 0;
}
void TrimVal(char* modify, char* string, char* newstr)
{
newstr[0] = '\0';
modify = strncat(newstr, modify, (strlen(modify) - strlen(string)));
return;
}
注:假設PATH_SIZE
是一個大小值,START_PATH
是一個字符數組
@sgm:沒有對這裏的標準。也許你對Windows數據類型的使用產生了負面影響? – 2009-10-15 15:39:03
我應該指出main()中的前兩行不會做你認爲他們做的事。首先,sizeof(START_PATH)實際上返回sizeof(char *),因爲sizeof(變量)實際返回變量_type_的大小。你想在第一行用strlen替換sizeof。其次,當你寫path = START_PATH時,你正在用覆蓋你指向START_PATH指針的指針。而不是簡單地複製指針,你需要使用strcpy。 – 2009-10-15 15:52:31
現在,我在帖子中修復了源代碼。 – 2009-10-15 15:55:17