当前位置:  开发笔记 > 编程语言 > 正文

C中意外的输出复制文件

如何解决《C中意外的输出复制文件》经验,为你挑选了1个好方法。

在另一个问题中,接受的答案显示了一种将文件内容读入内存的方法.

我一直在尝试使用此方法读取文本文件的内容,然后将其复制到新文件.但是,当我将缓冲区的内容写入新文件时,文件末尾总会有一些额外的垃圾.这是我的代码示例:

inputFile = fopen("D:\\input.txt", "r");
outputFile = fopen("D:\\output.txt", "w");

if(inputFile)
{
    //Get size of inputFile
    fseek(inputFile, 0, SEEK_END);
    inputFileLength = ftell(inputFile);
    fseek(inputFile, 0, SEEK_SET);

    //Allocate memory for inputBuffer   
    inputBuffer = malloc(inputFileLength);

    if(inputBuffer)
    {
        fread (inputBuffer, 1, inputFileLength, inputFile);
    }

    fclose(inputFile);

    if(inputBuffer)
    {
        fprintf(outputFile, "%s", inputBuffer);
    }

    //Cleanup
    free(inputBuffer);
    fclose(outputFile);
}

输出文件始终包含输入文件的精确副本,但随后在末尾附加了文本"MPUTERNAM2".任何人都可以解释为什么会发生这种情况?



1> Crashworks..:

你可能会更开心

int numBytesRead = 0;
if(inputBuffer)
{
  numBytesRead = fread (inputBuffer, 1, inputFileLength, inputFile);
}

fclose(inputFile);

if(inputBuffer)
{
  fwrite( inputBuffer, 1, numBytesRead, outputFile );
}

它不需要以空字符结尾的字符串(因此可以在包含零的二进制数据上正常工作)

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有