저는 C 언어가 매우 새로워서 중복 된 파일을 찾기 위해 폴더를 스캔 한 다음 몇 가지 작업을 수행하는 유틸리티에서 작업하고 있습니다. 중복 파일 이름 목록을 가지고있을 때 파일을 조작하기 위해 전체 경로와 파일 이름으로 문자열을 작성해야하지만 \에 경로를 추가하려고 할 때마다 오류가 발생하지만 오류는 발생하지 않습니다. 내가 건너 뛴다. 여기에 문제 코드의 단순화 된 버전입니다 : 내가 주석 아래에서 세 번째 줄을두면C에서 문자열 경로 작성하기
char *TARGET1 = ".";
char *TARGET2 = ".\\test";
char *PATH_SEP = '\\';
char *folder1_files[filecount1]; // These arrays are populated with file
char *folder2_files[filecount2]; // names elswhere in the code
int l = 0; // The counter for the loop that is comparing the filenames
char buffer[1024];
strcpy(buffer, TARGET2);
printf("Building the path now...\n");
//strcat(buffer, PATH_SEP);
strcat(buffer, folder2_files[l]);
printf("Path: %s\n", buffer);
이 프로그램이 완료와 나는 다음과 같은 출력 얻을 : 내장
경로를! 경로 :. 내가 주석을 제거하면 \
testfile3.txt, 나는이 오류 : 액세스 위반 읽기 위치 0x0000005C
이 잘못 어디로 이사람이 지적 할 수 있습니까? C에서 경로를 만드는 더 표준적인 방법이 있습니까?
* 코드에서 이름이 ... * 어디서? 저것을 배치하십시오. 더 쉽고 깨끗한 대신'snprintf()'를 사용하십시오. –
스택 오버플로에 오신 것을 환영합니다. [About] 및 [Ask] 페이지를 곧 읽으시겠습니까? 더 중요하게는 MCVE ([MCVE])를 만드는 방법을 읽어보십시오. 'char * folder1_files [filecount /];'는 문법 에러이다. 'filecount1'을 원하셨습니까? –
아래에서 세 번째 줄은 int l = 0; 주석을 달면 strcat (buffer, folder2_files [l])에서 컴파일 타임 오류가 발생합니다. 난 정의가 안 돼 –