주어진 디렉토리에서 .txt 파일을 열 수있는 프로그램을 만들고 있는데 디렉토리에있는 파일의 절대 경로가 모두 포함 된 배열이 있습니다. 다음과 같이 추출 파일의 이름을 반환하는 함수, 함수는 기록 :strcpy와 이상한 오류 C로 이상한 오류가 발생했습니다
이char *name(char *string) {
int i = strlen(string);
char *aux;
while(string[i-1] != '/'){
i--;
}
strcpy(aux, &string[i]);
return aux;
}
위의 함수는 분할 오류 오류가 제공되지만, 내가 다음 줄을 추가하는 경우 "INT의 J = 0;" C : 실수가 사라 보조의 선언 전에 새로운 작업 코드는
char *name(char *string) {
int i = strlen(string);
int j = 0;
char *aux;
while(string[i-1] != '/'){
i--;
}
strcpy(aux, &string[i]);
return aux;
}
입력은 \ 테스트 \의 a.txt이에게
출력 :
a.txt이 왜 "INT의 추가 j = 0; " 문제를 해결합니까? 이 불일치가 나중에 더 큰 문제로 이어질 지 모르기 때문에 나는 계속 붙어 있고 계속할 수 없다. 나는 문자열을 복사하기 위해 내 자신의 함수를 작성하려고 생각하고있다. 그러나 그 전에는 그 사실을 정말로 알고 싶다. 오류.
aux가 초기화되지 않았습니다. malloc을 먼저 사용하십시오. –
다른 해결책은 "int i = strlen (string);"이라는 선언 순서를 교환하는 것입니다. 및 "char * aux;" – user1493813
@ user1493813 이들은 해결책이 아닙니다. 이것은 정의되지 않은 동작입니다. – chris