2012-11-21 3 views
0

Cette fonction est supposée obtenir un paramètre en tant que pointeur d'un fichier et placer tout le fichier dans l'anagramme de la structure, puis l'écrire dans un autre fichier. À l'heure actuelle, les données ne contiennent que a.word, mais elles supposent également contenir a.sorted. J'ai vérifié l'a.sorted en utilisant printf et il imprime les données correctes, mais pourquoi ne pas écrire dans le fichier de données? Il encore ne peux pas obtenir le a.sorted même si j'augmente le nombre de frwitec fwrite() écrit dans un fichier avec une seule variable struct?

#include <stdio.h> 
#include <stdlib.h> 
#include <stddef.h> 
#include <string.h> 
#include <errno.h> 
#include <ctype.h> 
#include "anagrams.h" 
#define SIZE 80 


    //struct 
struct anagram { 
    char word[SIZE]; 
    char sorted[SIZE]; 
}; 


void buildDB (const char *const dbFilename){ 

FILE *dict, *anagramsFile; 
struct anagram a; 

//check if dict and anagram.data are open 
errno=0; 
dict= fopen(dbFilename, "r"); 

if(errno!=0) { 
perror(dbFilename); 
exit(1); 
} 

errno=0; 

anagramsFile = fopen(anagramDB,"wb"); 

char word[SIZE]; 
char *pos; 
int i=0; 

while(fgets(word, SIZE, dict) !=NULL){ 

//get ripe of the '\n' 
pos=strchr(word, '\n'); 
    *pos = '\0'; 

strncpy(a.word,word,sizeof(word)); 
//lowercase word 
int j=0; 
while (word[j]) 
    { 
    tolower(word[j]); 
    j++; 
    } 

/* sort array using qsort functions */ 
qsort(word,strlen(word), 1, charCompare); 

strncpy(a.sorted,word,sizeof(word)); 
//printf(a); 

fwrite(&a,1,strlen(word)+1,anagramsFile); 

i++; 
} 
fclose(dict); 
fclose(anagramsFile); 

} 

il supposé contient des données avec a.sorted par exemple « 10 01ht » données: enter image description here

Répondre

0

fwrite(&a,1,strlen(word)+1,anagramsFile); devrait ont été fwrite(a.sorted,1,strlen(a.sorted)+1,anagramsFile); Je suppose que la déclaration de triée comme char sorted[SOME_LEN];

+0

le problème est que je veux à la fois a.word et a.sorted écrire dans le fichier, et pas seulement l'un d'eux – keivn

+0

Pouvez-vous poster juste la 'struct anagram' –

+0

I posté déjà, désolé j'ai oublié de le poster – keivn