2014-02-22 41 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/

相关问题