一段很简单的C程序,请帮忙排错
本帖最后由 jdgdf566 于 2018-08-23 22:12 编辑int main(int argc, char *argv[])
{
if(argc == 1)return 0;
FILE* fileSRC = fopen(argv, "r");
if(fileSRC == NULL)
{
printf("文件不存在或不可读");
return 0;
}
FILE* fileDST1 = fopen(strcat(argv, ".1"), "w+");
//
unsigned int bufferSize = 1024*1024; //1M bytes buffer
void* bufferSrc = malloc(bufferSize);
unsigned int length = 0;
while( !feof(fileSRC) )
{
length = fread(bufferSrc, bufferSize, 1, fileSRC);
printf("%d", length);
fwrite(bufferSrc, length, 1, fileDST1);
}
fclose(fileSRC); fclose(fileDST1); free(bufferSrc);
return 0;
}输出:0
真受不了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main( int argc, char *argv[] )
{
if( argc < 2 )
return 0;
FILE* file_src = fopen( argv, "rb" );
if( !file_src )
{
puts( "文件不存在或不可读." );
return 1;
}
char* filename = malloc( strlen(argv)+3 );
strcat( strcpy(filename,argv), ".1" );
FILE* file_dst = fopen(filename, "wb");
free( filename );
const size_t buffer_size = 1024*1024;
void* buffer = malloc( buffer_size );
for( size_t n; n=fread(buffer,1,buffer_size,file_src), n>0; )
fwrite( buffer, 1, n, file_dst );
free( buffer );
fclose( file_dst );
fclose( file_src );
return 0;
// 忽略了malloc成功与否的检查、忽略文件打开成功与否的检查、忽略了读取错误的检查、写入错误的检查
} 学到很多东西,多谢多谢
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char filename;
FILE* fileSRC;
FILE* fileDST1;
void *bufferSrc;
unsigned int length;
unsigned int bufferSize;
int retval;
if (argc > 1) {
fileSRC= fopen(argv, "r");
if(fileSRC != NULL) {
strcpy(filename, argv);
strcat(filename, ".1");
fileDST1= fopen(filename, "w");
if (fileDST1 != NULL) {
bufferSize = 1024 * 1024; //1M bytes buffer
bufferSrc = malloc(bufferSize);
if (bufferSrc != NULL) {
while(!feof(fileSRC)) {
length = fread(bufferSrc, 1, bufferSize, fileSRC);
printf("%d\n", length);
fwrite(bufferSrc, length, 1, fileDST1);
}
free(bufferSrc);
retval = 0;
}else {
printf("没有内存空间\n");
retval = -1;
}
fclose(fileDST1);
}else {
printf("不能写文件\n");
retval = -2;
}
fclose(fileSRC);
}else {
printf("文件不存在或不可读\n");
retval = -3;
}
}else {
printf("USAGE: dupfile <source_file>\n");
retval = -4;
}
return retval;
}
本帖最后由 windoze 于 2018-08-29 13:59 编辑
要不要试试短的?
#include <fstream>
int main(int argc, char *argv[]) {
std::ofstream(std::string(argv)+".1") << std::ifstream(argv).rdbuf();
}
页:
[1]