2008年4月28日 星期一

[C] 檔案處理 - 讀取出的檔案大小錯誤?

    開檔讀資料  請務必指定 mode


        FILE *fp ,*fp2;
        char buf;
        fp = (FILE*)fopen( argv[1] , "r" );
        fp2 = (FILE*)fopen( argv[2] , "w" );


        while( !feof( fp ) ){
            fread( &buf , 1, 1 , fp );
            fwrite( &buf , 1, 1 ,fp2 );
        }
        fclose( fp );
        fclose( fp2);


    以上程式  若是讀圖檔(binary)  在 unix 下可以正常地複製一張圖出來
    但在 Windows XP with SP2 上  無論是 Dev-C++ 還是 VC 6 都會出錯


    修正的方式:


        FILE *fp ,*fp2;
        char buf;
        fp = (FILE*)fopen( argv[1] , "rb" );
        fp2 = (FILE*)fopen( argv[2] , "wb" );

        while( !feof( fp ) ){
            fread( &buf , 1, 1 , fp );
            fwrite( &buf , 1, 1 ,fp2 );
        }
        fclose( fp );
        fclose( fp2);


    結論:


        不要偷懶  :p



沒有留言:

張貼留言