2013-10-15 12 views
-1

Donc, j'ai cette fonction sur mon programme qui est supposée enregistrer une structure "car_str" à l'endroit désiré sur un fichier spécifié comme paramètre. Mais quand je l'exécute, il continue d'écraser le premier emplacement encore et encore, comme si fseek ne pointait pas vers l'endroit spécifié sur le fichier. Y a-t-il un problème avec mon code? Je pense que cela peut être lié à la multiplication, puisque sans cela le programme fonctionne bien, mais je ne peux pas pointer vers l'endroit que je veux.Avoir des problèmes avec fseek() dans C

void save(int car_nbr) 
{ 
    FILE *f; 

    f = fopen("memory.txt","wb"); 
    if (!f) 
    { 
     printf ("error"); 
    } 
    else 
    { 
     car_nbr--; 
     fseek(f, sizeof(struct car_str)*car_nbr, SEEK_SET); 
     fwrite(&car,sizeof(struct car_str),1,f); 
     rewind(f); 
     fclose(f); 
     printf("\nsaved"); 
    } 
} 
+0

Que vous apporte la multiplication? – dutt

+2

'fseek' a une valeur de retour qui vous indique si elle a réussi. Vous devriez vérifier la valeur de retour. Est-ce ce que vous attendez? – abelenky

+0

il est supposé donner la taille en octets de (car_nbr) fois ma structure – SergiBJ

Répondre

0

vous devez ouvrir avec r + b.

si vous ne parvenez pas que le fichier ne pas exister, de sorte que vous pouvez utiliser « wb »

« w » - écriture: Créez un fichier vide pour les opérations de sortie. Si un fichier portant le même nom existe déjà, son contenu est ignoré et le fichier est traité comme un nouveau fichier vide. "R +" - lecture/mise à jour: ouvre un fichier à mettre à jour (à la fois pour l'entrée et la sortie). Le fichier doit exister.

f = fopen("memory.txt","r+b"); 
+0

essayé et ne fonctionne toujours pas, je ne pense pas que ce soit le problème, puisque je n'écris que dans cette fonction. – SergiBJ

+0

size_t pos = ftell (f); vous indiquera la position de lecture/écriture dans le fichier. – SHR

+0

cela a fonctionné pour moi parfaitement, seulement la raison que vous voyez juste un article est l'ouverture avec "wb". – SHR

Questions connexes