C 문자열 문제로 나를 도울 수 있는지 궁금 해서요. 나는 3 char 포인터를 보내는 함수가있다. 이 함수 내에서 char 포인터는 올바르게 이동 및 수정됩니다. 그러나, 그들이 호출되는 주 함수로 돌아 가면 함수는 변경되지 않습니다. 나는 가치있게 지나가는 것이 실수인가?C에서 문자 포인터를 전달하고 수정하는 데 혼란이 있음 (참조 대 값)
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
당신은을 수정이
modify = strncat(newstr, modify, (strlen(modify) - strlen(string)));
일에서 char 배열
@sgm : 여기 표준에 대한 아무것도. 아마도 당신은 Windows 데이터 유형의 사용에 의해 실망한 것입니까? –
main()의 처음 두 줄은 자신이 생각하는대로하지 않는다는 것을 지적해야합니다. 첫째, sizeof (START_PATH)는 실제로 sizeof (char *)를 반환합니다. sizeof (variable)는 실제로 변수 _type_의 크기를 반환하기 때문입니다. 첫 번째 줄에서 sizeof를 strlen으로 바꾸려고합니다. 둘째, path = START_PATH를 쓸 때 START_PATH에 대한 포인터로 할당 한 메모리에 대한 포인터를 덮어 씁니다. 단순히 포인터를 복사하는 대신 strcpy를 사용해야합니다. –
게시물에 소스를 수정했습니다. –