2014-02-22 65 views
-1
int main() 
{ 
    FILE *fs,*ft; 
    char ch; 
    fs=fopen("main.c","r"); 
    if(fs==NULL) 
    { 
     printf("can not open source file\n"); 
     getch(); 
     exit(1); 
    } 
    ft=fopen("demo.docx","w"); 
    if(ft==NULL) 
    { 
     printf("can not open target file\n"); 
     getch(); 
     exit(1); 
    } 
    while(1) 
    { 
     ch=fgetc(fs); 
     if(ch==EOF) 
     { 
      break; 
     } 
     fputc(ch,ft); 
    } 
    fclose(fs); 
    fclose(ft); 
    return 0; 
} 

使用上面的代碼,我試圖將main.c的內容複製到demo.docx
程序工作正常,但當我在外部打開demo.docx時,它崩潰了。
從我這邊來看是否有問題,或者我們無法使用c寫入docx文件?我們可以用c寫一個word文件嗎?

+6

是的,你可以。但是,您是否詳細研究了[docx](http://en.wikipedia.org/wiki/Docx)文件格式(您需要數月或數年的工作)? –

+0

@BasileStarynkevitch:請給我一個結論 – zee

+1

這是一個想法。法文和英文字母相同(差不多)。那麼英語單詞在法語中的意思是否相同? –

回答

7

Word文檔不像正常的文本文件那樣書寫,而是以非常特定的格式書寫,您必須遵循該格式。這當然可以在C中完成,但我強烈建議不要這樣做,而是嘗試找到某個庫來使用或使用不同的語言和框架。 C#/ .Net和Java都有處理Office文檔的好選擇(對於Java,例如Apache POI)。

如果你真的不想浪費你的時間,你可以找到辦公室的規格文件在這裏:http://msdn.microsoft.com/en-us/library/cc313105%28v=office.12%29.aspx

+0

是適用於.txt文件的相同東西 – zee

+0

@zee:no。文本文件只是純文本。任何帶有格式化指令(.rtf,.doc,.docx,.odf等)的文件都只需要寫入文件的純文本;會有你需要遵循的特定格式。 – computerfreaker

3

的MS Word *.docx文件是不正常的文本文件,你需要一個專門的庫來訪問這些文件,如http://libopc.codeplex.com/

相關問題