Fichier binaire en lecture/écriture en C

J'ai donc une entrée.fichier bin qui contient les éléments suivants

IK-SZH;jdl72u;John Doe;2013-03-28 11:05
IK-GRR;kat91n;Jane Doe;2013-03-21 15:41
IK-GRR;oat62f;Jane Doe;2013-03-24 08:08

Ce que je suis en train de faire est de lire dans un struct. Faire quelque chose avec les données. Ajouter/Supprimer des lignes.
Alors, j'aimerais écrire le contenu de la structure de dos à l'entrée.fichier bin dans le même format que ci-dessus.

Mais au lieu d'apparaître comme il est ci-dessus. C'est comme ça (sans les espaces):

IK-SZH NUL jdl72u NUL John Doe NUL NUL NUL NUL NUL 2013-03-28 NUL NUL NUL IK-GRR NUL kat91n NUL Jane Doe NUL NUL NUL NUL ...

Quand je re-lire le fichier (avec les NULs), Elle ne met que la 1ère ligne dans la struct

Mon code

typedef struct foo {
    char kid[7];    
    char jid[7];    
    char name[21];  
    char time[20];  

} Foo;

Foo foo[200];
FILE* fp;
int size;

------- Lecteur de fichier

void read(char* filename){
    fp = fopen(filename, "rb"); 
    int i = 0;

    while (!feof(fp)) {

        if (fp==NULL){perror("File opening error\n"); exit(1);}

        fscanf(fp,"%[^;]; %[^;]; %20[^\;]; %s\n", foo[i].kid, foo[i].jid,
                foo[i].name, foo[i].time);
        i++;
    }

    size = i;

    print();

    fclose(fp);
}


void print(){
    int i;
    for (i = 0; i < size; ++i){
        printf("%s\t %s\t %s\t %s\n", foo[i].kid, foo[i].jid,
               foo[i].name, foo[i].time);
    }
}

----- Écrivain

void write(){
    char str[1000];

    FILE* f = fopen("input.bin", "wb");
    fseek(f, 0, SEEK_SET);
    int i;
    for (i = 0; i < jel_size; i++)
            fwrite(&foo[i], sizeof(struct foo), 1, f);
    fclose(f);

}

Essayé cela, mais cela n'a rien écrire dans le fichier:

    char str[1000];
    sprintf(str,"%s;%s;%s;%s\n", jelent[i].kazon,
                    jelent[i].jazon,jelent[i].nev,  jelent[i].ido );

        write(f,&str,sizeof(str))!=sizeof(str);
L'entrée.bin me semble un fichier texte au lieu d'un fichier binaire.
Vous pouvez envisager d'utiliser fprintf() au lieu de fwrite() ou write().
Vous devriez ouvrir un fichier texte en mode texte, pas en mode binaire.

OriginalL'auteur VZKiss | 2013-04-01