开发者

c++ save matrix data into text or XML (better)

开发者 https://www.devze.com 2023-01-30 03:37 出处:网络
I created a file.dat whith this function int writeData(do开发者_如何学编程uble* v, int length, FILE* fh)

I created a file.dat whith this function

int writeData(do开发者_如何学编程uble* v, int length, FILE* fh)
{
    FILE *Stream;     //Stream for output.
    double*Elem;     //Pointer to all the element to save.

    assert( fh!=NULL );
    Stream = fh;

    Elem=(double*)malloc((length+2)*sizeof(double));//Allocate memory to Elem.
    if(Elem==NULL)
    {
        printf("Can't allocate memory for saving the matrix!");
        return(0);
    }

    Elem[0]=(double)1;//Save the dimensions of the matrix.
    Elem[1]=(double)length;

    int i;
    for(i=0;i<length ;i++) 
        Elem[i+2]=v[i];

    if(fwrite((void*)Elem,sizeof(double),(length+2),Stream) < (unsigned)(length+2)) //Save the data.
    {
        printf("Error, can't save the matrix!");
        return(0);
    }
    free(Elem);
    return(1);
}

Now I'd like to convert this file into an xml one or into a text file...

Any tips? Thanks


Saving the values into text format is easy:

int writeTextData(double* v, int length, FILE* fh)
{
   assert( fh!=NULL );
   fprintf(fh, "%d\n", length);
   for(int i=0;i<length ;i++)
      if(fprintf(fh, "%lf ", v[i]) <= 0)
      {
         printf("Error, can't save the matrix!");
         return(0);
      }
   return(1);
}

Will save length followed by length numbers.

XML is better written with a help of a library.

While such a simple dataset can be saved into XML manually (through fprintf's) anything more complicated will require you to do complex encoding/escaping and is very error prone, unless you are proficient with XML - as previously said, you'd better use a library (such as libxml)

0

精彩评论

暂无评论...
验证码 换一张
取 消