2010-12-08 27 views
1

J'ai créé un file.dat cinque cette fonctionC++ sauvegarder les données de la matrice en texte ou XML (mieux)

int writeData(double* 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); 
} 

Maintenant, je voudrais convertir ce fichier dans un fichier XML ou un dans un fichier texte ..

Des conseils? Merci

+0

Donc, vous voulez réellement enregistrer la représentation matricielle au format XML ou texte? C'est ce qui devrait être mentionné dans le titre de la question. Je l'ai édité. J'espère que c'est ce que vous vouliez dire. – EFraim

Répondre

2

Sauvegarde des valeurs en format texte est facile:

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

Volonté longueur suivie par des numéros de longueur.

XML est mieux écrit avec l'aide d'une bibliothèque. Si un ensemble de données aussi simple peut être sauvegardé manuellement en XML (via fprintf), quoi de plus compliqué, vous devrez effectuer un encodage/échappement complexe et être sujet aux erreurs, sauf si vous maîtrisez XML - comme vous l'avez dit précédemment. d mieux utiliser une bibliothèque (telle que libxml)