查看完整版本: 關於寫檔的問題
頁: [1]

stephenwei_lu 發表於 2019-1-4 12:01 PM

關於寫檔的問題

Dear All,

我嘗試用fopen 的讀寫去做copy檔案的測試, 在測試 txt 的時候是可以的
但是一換到 word檔(.docx)的時候檔案就會拷貝不完全
請問這是什麼原因?


<div></div>

stephenwei_lu 發表於 2019-1-4 12:34 PM

google 了其他, 好像不能這麼寫

baepi 發表於 2019-1-4 06:01 PM

我剛剛測試了一下....可以呀....
方便交流您的程式碼嗎?
或是您的檔案方便提供嗎?
以下是我隨意寫的....下班前隨意寫的...湊合能讓您比較比較#include <stdio.h>
void main()
{
        FILE *r_File , *w_File;

        char buffer;

        r_File = f open("a.docx", "rb");
        w_File = f open("b.docx", "wb");

        if (NULL == r_File)
        {
                p rintf("read error");
                return ;
        }
        else if (NULL == w_File)
        {
                p rintf("create error");
                return ;
        }
        else
        {
                fseek(r_File, 0, SEEK_END);
                int size = ftell(r_File);
                fseek(r_File, 0, SEEK_SET);
                p rintf("size = %d", size);
               
                while (size > 0)
                {
                        if (size > 1024)
                        {
                                f read(buffer, 1024, 1, r_File);
                                fwrite(buffer, 1, 1024, w_File);
                                size -= 1024;
                        }
                        else
                        {
                                f read(buffer, size, 1, r_File);
                                fwrite(buffer, 1, size, w_File);
                                size = 0;
                        }
                }
        }
        f close(r_File);
        f close(w_File);
}

補充內容 (2019-1-4 06:02 PM):
補充一點...有些字被切開...是因為網站判定敏感字...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

z1090128 發表於 2019-1-5 01:45 PM

有需要交入其他標頭檔嗎?還是因為word檔的格式比較特殊不能用這直接的方法

ash1326 發表於 2019-1-5 04:06 PM

word 有他自己的格式

如果你想要寫一個複製word的程式

嘗試使用 rb 和 wb 來進行<br><br><br><br><br><div></div>

ash1326 發表於 2019-1-5 04:18 PM

算是很簡單的小程式,直接寫給你參考吧

存成副檔名 .c 就好了,所有格式都能複製





補充內容 (2019-1-5 04:23 PM):
寫太快忘了關檔了,派謝!! 自己在最後面加個 fclose 吧,隨手養成好習慣~

snowflying 發表於 2019-1-5 05:32 PM

本帖最後由 snowflying 於 2019-1-5 05:34 PM 編輯

baepi 發表於 2019-1-4 06:01 PM static/image/common/back.gif
我剛剛測試了一下....可以呀....
方便交流您的程式碼嗎?
或是您的檔案方便提供嗎?

我的意思是像這樣


#include <stdio.h>
#define fopen_ fopen
#define printf_ printf
int main()
{
    FILE *r_File , *w_File;
    int size;

    char buffer;

    r_File = fopen_("a.docx", "rb");
    w_File = fopen_("b.docx", "wb");

    if (NULL == r_File)
    {
        printf_("read error");
        return 1;
    }
    else if (NULL == w_File)
    {
        printf_("create error");
        return 1;
    }
    else
    {      
        while((size = fread(buffer, 1, 1024, r_File)) > 0)
            fwrite(buffer, 1, size, w_File);
            
        fclose(r_File);
        fclose(w_File);
        return 0;
    }
}



...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

stephenwei_lu 發表於 2019-1-8 01:59 PM

本帖最後由 stephenwei_lu 於 2019-1-8 02:15 PM 編輯

這種方式確實可以, 不過,我不是用這種方式丟檔的
我是用像是pipe的方式丟的

stephenwei_lu 發表於 2019-1-13 11:02 PM

來吧, 試試看吧, docx
stackoverflow.com/questions/15957195/how-to-send-a-file-through-a-named-pipe-in-c
頁: [1]