디렉토리의 파일을 읽고 각 파일 이름을 문자열 배열에 저장하려고합니다. 나는 내 삶을 위해 일할 수 없다. 함수는 다음과 같습니다.C 문자열을 배열로 저장
char *readFile(char *dir){
char *fileStringArray[1000];
DIR *dirPointer;
int file_count = 0;
struct dirent *file;
struct stat fileType;
int i = 0;
if ((dirPointer = opendir(dir)) == NULL){
printf("Directory not found, try again\n");
return NULL;
}else{
printf("Reading files in directory\n");
while((file = readdir(dirPointer)) != NULL){ //iterate through contents of directory
stat(dir, &fileType);
if(i > 1){ //ignore . and .. directories that appear first
file_count++;
printf("%s\n", file->d_name);
strcpy(fileStringArray[i-2], file->d_name); //crashes, replace
//with [i] to not crash, but i-2 makes more sense to me
//fileStringArray[i-2] = &file->d_name; alternate idea
}
else{
i++;
}
}
int j;
for(j = 0; j < file_count; j++){
printf(":::%s\n", fileStringArray[j]); //print the string array
}
}
printf("Done reading\n\n");
closedir(dirPointer);
return dir;
}
'fileStringArray'는 초기화되지 않은 * 포인터의 배열입니다. 그 값에 접근하면 (즉,'strcpy (fileStringArray [i-2], file-> d_name)') 결과는 정의되지 않은 동작이됩니다. 먼저 저장하려는 각 문자열에 대해 메모리를 할당하십시오. – kaylum
C 서적을 읽으십니까? 통계적으로, 나는 책을 읽는 사람들이 이런 종류의 기본적인 문제를 가지지 않는 것처럼 보이기 때문에 "아니오"에 내기를 걸었습니다 ... – Sebivor