سؤال

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?

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

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/.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top