Pregunta

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;
}

Using the above code, I tried to copy the contents of main.c to demo.docx.
The program worked fine, but when I externally opened demo.docx, it crashed.
Is there a problem from my side, or we can not write to a docx file using c?

¿Fue útil?

Solución

The Word document isn't written like a normal text file, but rather written in a very specific format which you would have to follow. This can of course be done in C but I strongly would recommend against it and instead try to find some library to use or use a different language and framework. Both C#/.Net and Java have good options for working with Office documents (for Java there's Apache POI for example).

If you really want to waste your time you can find the specs for the Office files here: http://msdn.microsoft.com/en-us/library/cc313105%28v=office.12%29.aspx

Otros consejos

MS Word *.docx files are not normal text files and you need a specialized library to access such files such as http://libopc.codeplex.com/.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top