두 개의 문자열을 연결하여 파일 경로를 얻을 수 있습니다. 그러나, 나는 Valgrind의에서 오류가 발생하고있어C Strcat valgrind error
조건부 점프 또는 이동은 초기화되지 않은 값 (들)에 따라
내 코드 :
/**
* @brief Concatenate two strings to get file path
* @param firstP - First string
* @param secondP - Second string
* @return Returns the concatenated string
*/
char *getPathDir(char *firstP, char *secondP) {
char *new_str;
int stringSize = strlen(firstP)+strlen(secondP)+2;
if((new_str = malloc(stringSize)) != NULL){
new_str[0] = '\0';
strcat(new_str,firstP);
new_str[strlen(firstP)] = '/';
strcat(new_str,secondP);
} else {
perror("malloc");
cleanUp();
exit(EXIT_FAILURE);
}
return new_str;
}
sprintf (new_str, "% s/% s", firstP, secondP); 대신에. 'new_str [strlen (firstP)] = '/';'는 문자열의 마지막 null 종결자를 덮어 씁니다. 따라서 두 번째'strcat'는 올바른 문자열의 끝을 찾을 수 없습니다. – BLUEPIXY
이렇게하는 것이 더 좋은 방법입니다 ... strcat 함수. 참조 : https://www.tutorialspoint.com/c_standard_library/c_function_strcat.htm 또는 @BLUEPIXY 제안 : –
@BLUEPIXY if 문 안의 모든 것을 제거하고 sprintf (new_str, "% s/% s" , firstP, secondP); 이제는 완벽하게 작동합니다. 감사합니다 :) – Cows42