k78*_*787 14 c null fopen fwrite
我正在使用C编程语言编写一个简单的文件分割器/合并程序.问题是,由于某种原因,fopen返回NULL,因此,我的程序在fwrite语句中崩溃.我该如何解决?
这是C文件:
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;
}
Run Code Online (Sandbox Code Playgroud)
Jar*_*Par 10
fopen可以返回的原因有很多,NULL包括(但肯定不限于):
找出哪个是负责任的方法是深入研究errno代码.
但是,仅仅因为您解决了这个特定错误并不意味着您可以假设fopen永远不会返回NULL.在处理I/O操作时,您的代码只需要预期失败.无法预测I/O操作的成功,它们总是会失败.
| 归档时间: |
|
| 查看次数: |
67218 次 |
| 最近记录: |