我试图以二进制的方式打开文件movie.avi,并复制到另外一个文件film.avi,于是写了下面的一段代码。问题是,这段代码只对某些文件适用,而无法”完全”复制另外一些文件,也就是说,当源文件并没有读完时却已经提前结束了。我想应该是某一个特殊字节的值导致read认为文件已经读完了,但我是以二进制方式打开的文件呀,这种情况下,文件结束符EOF还有意义吗?puzzling……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int
main()
{
    char buf[4096];
    ofstream out("film.avi" );
    ifstream in("movie.avi", ios::binary);
    // ifstream in("movie.rmvb");
    while(1)
    {
        in.read(buf, sizeof(buf));
        out.write(buf, in.gcount());
        if(in.gcount() < sizeof(buf)) break;
    }
    in.close();
    out.close();
    return 0;
}
Tags: ,.
你好!除了代码,此处没有多少原创之物,皆为本人搜集、整理、总结之记录与心得,欢迎转载分享!转载时请尽量注明出处,将不胜感激。祝你健康、快乐!
Home

RFC: Request For Comments. Orz..

Name(required)
Mail (required),(will not be published)

RFC: Request For Comments. Orz..

Website(recommended)