저는 C 프로그래밍 언어로 된 간단한 파일 분할기/합병 프로그램을 만들고 있습니다. 문제는 어떤 이유로 인해 fopen이 NULL을 반환하기 때문에 내 프로그램이 fwrite 문에서 충돌합니다. 이 문제를 어떻게 해결할 수 있습니까? 할'fopen'이 NULL 포인터를 반환하는 이유는 무엇입니까?
int SplitFile(char* filename, char* output, size_t size)
{
char current_file_name[256];
int file_count = 0, i = 0;
FILE *file = fopen(filename, "rb");
printf("split %s into chunks of %d named\n", filename, size);
if (!file)
return E_BAD_SOURCE;
else
{
output = (char *) malloc(size * sizeof(char));
if (output == NULL)
return E_NO_MEMORY;
else
{
int bytes_read = 0;
FILE *outFile;
do
{
bytes_read = fread(output, sizeof(char), size, file);
sprintf(current_file_name, "%s%04lu\n", "part", file_count++);
outFile = fopen (current_file_name, "wb"); // THIS RETURNS NULL
fwrite(output, sizeof(char), bytes_read, outFile); //CRASHES ON THIS LINE
}
while (bytes_read > 0)
;
//fclose(outFile);
}
}
fclose(file);
printf("...\n");
return 0;
}
Snarky - 당신이 그것을에 기록하기 전에 열린 파일을 확인하십시오. 진짜 대답은 아마도 파일 시스템 권한이 없거나 존재하지 않는 폴더 경로에있는 것입니다. – EnabrenTane
'errno'에 어떤 오류가 저장되어 있습니까? 'if (! outFile) perror ("fopen");를 추가하고 라이브러리가 실패한 이유를 알려주도록하십시오. :) – sarnold
in errno 내가 fopen : 잘못된 인수 – k787