伊莉討論區

標題: 關於寫檔的問題 [打印本頁]

作者: stephenwei_lu    時間: 2019-1-4 12:01 PM     標題: 關於寫檔的問題

Dear All,

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



作者: stephenwei_lu    時間: 2019-1-4 12:34 PM

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

作者: baepi    時間: 2019-1-4 06:01 PM

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

  5.         char buffer[1024];

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

  8.         if (NULL == r_File)
  9.         {
  10.                 p rintf("read error");
  11.                 return ;
  12.         }
  13.         else if (NULL == w_File)
  14.         {
  15.                 p rintf("create error");
  16.                 return ;
  17.         }
  18.         else
  19.         {
  20.                 fseek(r_File, 0, SEEK_END);
  21.                 int size = ftell(r_File);
  22.                 fseek(r_File, 0, SEEK_SET);
  23.                 p rintf("size = %d", size);
  24.                
  25.                 while (size > 0)
  26.                 {
  27.                         if (size > 1024)
  28.                         {
  29.                                 f read(buffer, 1024, 1, r_File);
  30.                                 fwrite(buffer, 1, 1024, w_File);
  31.                                 size -= 1024;
  32.                         }
  33.                         else
  34.                         {
  35.                                 f read(buffer, size, 1, r_File);
  36.                                 fwrite(buffer, 1, size, w_File);
  37.                                 size = 0;
  38.                         }
  39.                 }
  40.         }
  41.         f close(r_File);
  42.         f close(w_File);
  43. }
複製代碼

補充內容 (2019-1-4 06:02 PM):
補充一點...有些字被切開...是因為網站判定敏感字
作者: z1090128    時間: 2019-1-5 01:45 PM

有需要交入其他標頭檔嗎?還是因為word檔的格式比較特殊不能用這直接的方法
作者: ash1326    時間: 2019-1-5 04:06 PM

word 有他自己的格式

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

嘗試使用 rb 和 wb 來進行
作者: ash1326    時間: 2019-1-5 04:18 PM

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

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

[attach]126092933[/attach]



補充內容 (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
我剛剛測試了一下....可以呀....
方便交流您的程式碼嗎?
或是您的檔案方便提供嗎?

我的意思是像這樣

  1. #include <stdio.h>
  2. #define fopen_ fopen
  3. #define printf_ printf
  4. int main()
  5. {
  6.     FILE *r_File , *w_File;
  7.     int size;

  8.     char buffer[1024];

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

  11.     if (NULL == r_File)
  12.     {
  13.         printf_("read error");
  14.         return 1;
  15.     }
  16.     else if (NULL == w_File)
  17.     {
  18.         printf_("create error");
  19.         return 1;
  20.     }
  21.     else
  22.     {      
  23.         while((size = fread(buffer, 1, 1024, r_File)) > 0)
  24.             fwrite(buffer, 1, size, w_File);
  25.             
  26.         fclose(r_File);
  27.         fclose(w_File);
  28.         return 0;
  29.     }
  30. }
複製代碼




作者: 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




歡迎光臨 伊莉討論區 (http://a04.eyny.com/) Powered by Discuz!