举个例子:假如有个文本文件sample.txt内容为 12345
我要把它拷贝到另外一个文本文件sample2.txt中..我的实现方法如下:
FILE *stream;
FILE *desFile;
int i, j, ch;
bool StopWrite = false;
/* Open file to read line from: */
if( (stream = fopen( "sample.txt", "r" )) == NULL )
exit( 0 ); /* Get file length */
fseek(stream, 0, SEEK_END);
unsigned int len = ftell(stream);
rewind(stream); char* buffer = new char[len];
/* Read all characters and place them in "buffer": */
ch = fgetc( stream ); for( i=0,j=0; (i < (int)len ) && ( feof( stream ) == 0 ) ; i++ )
{
buffer[j] = (char)ch;
ch = fgetc(stream);
j++;
}
buffer[j] = '\0';
fclose( stream );
if( (desFile = fopen( "sample2.txt", "w+t" )) != NULL )
{
/* Write characters to stream */
fwrite( buffer, sizeof( char ), strlen(buffer), desFile );
fclose( desFile ); }
else
MessageBox( "Problem opening the file\n" );
/* delete buffer */
delete [] buffer; 编译通过后再运行,会弹出非法操作的错误提示框..请问这段代码哪里出现了问题呢?
我要把它拷贝到另外一个文本文件sample2.txt中..我的实现方法如下:
FILE *stream;
FILE *desFile;
int i, j, ch;
bool StopWrite = false;
/* Open file to read line from: */
if( (stream = fopen( "sample.txt", "r" )) == NULL )
exit( 0 ); /* Get file length */
fseek(stream, 0, SEEK_END);
unsigned int len = ftell(stream);
rewind(stream); char* buffer = new char[len];
/* Read all characters and place them in "buffer": */
ch = fgetc( stream ); for( i=0,j=0; (i < (int)len ) && ( feof( stream ) == 0 ) ; i++ )
{
buffer[j] = (char)ch;
ch = fgetc(stream);
j++;
}
buffer[j] = '\0';
fclose( stream );
if( (desFile = fopen( "sample2.txt", "w+t" )) != NULL )
{
/* Write characters to stream */
fwrite( buffer, sizeof( char ), strlen(buffer), desFile );
fclose( desFile ); }
else
MessageBox( "Problem opening the file\n" );
/* delete buffer */
delete [] buffer; 编译通过后再运行,会弹出非法操作的错误提示框..请问这段代码哪里出现了问题呢?
FILE *stream;
FILE *desFile;
int i, j, ch;
bool StopWrite = false;
/* Open file to read line from: */
if( (stream = fopen( "sample.txt", "r" )) == NULL )
exit( 0 ); /* Get file length */
fseek(stream, 0, SEEK_END);
unsigned int len = ftell(stream);
rewind(stream); char* buffer = new char[len];
/* Read all characters and place them in "buffer": */
ch = fgetc( stream ); for( i=0,j=0; (i < (int)len ) && ( feof( stream ) == 0 ) ; i++ )
{
buffer[j] = (char)ch;
ch = fgetc(stream);
j++;
}
// buffer[j] = '\0';
fclose( stream );
if( (desFile = fopen( "sample2.txt", "w+t" )) != NULL )
{
/* Write characters to stream */
fwrite( buffer, sizeof( char ), len, desFile );
fclose( desFile ); }
else
MessageBox( "Problem opening the file\n" );
/* delete buffer */
delete [] buffer;