Nic*_*ick 2 c string pointers pass-by-reference
我想知道你是否可以帮我解决C字符串问题,我不太明白.我有一个函数,我发送3个char指针.在此函数中,char指针被正确移位和修改.但是,当我返回到调用它们的main函数时,所述函数不会改变.我的价值是错误吗?这是我的代码示例:
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;
}
Run Code Online (Sandbox Code Playgroud)
注意:假设PATH_SIZE是一个大小值,并且START_PATH是一个char数组
这样做
modify = strncat(newstr, modify, (strlen(modify) - strlen(string)));
Run Code Online (Sandbox Code Playgroud)
您正在修改指针,而不是指针指向的指针.
当你传递path给TrimVal.它将传入path例如0x12345 的存储位置
当你这样做时modify =,将局部变量更改modify为新的内存位置,例如0x54321
当你返回main时,它只有一个指向0x12345的指针,当它看到那里时,没有任何改变.
您可以轻松解决问题
{
...
TrimVal(&path, "*.*", newstr);
...
}
void TrimVal(char** modify, char* string, char* newstr)
{
newstr[0] = '\0';
*modify = strncat(newstr, *modify, (strlen(*modify) - strlen(string)));
return;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4406 次 |
| 最近记录: |