2 votes

C - Écriture de tableaux de caractères dans un fichier

J'ai la structure suivante :

struct visitordata {
    char name[25];
    char email[25];
    int id;
    char reg_time[9];
};

Je veux écrire les données de ces visiteurs dans un fichier. Je lis ces données à partir du CLI :

int main(int argc, char** argv)
{
    struct visitordata mydata;
    char name[25], email[25], eventid[10], c;
    printf("Enter name: ");
    scanf("%s", name);
    strcpy(mydata.name, name);
    //etc.
}

Maintenant, lorsque j'essaie d'écrire dans le fichier :

lseek(handle, -sizeof(mydata.name), SEEK_END);
fputs(handle, &mydata.name);  

Cela permet d'écrire les données fournies par l'utilisateur, mais aussi un peu de charabia, puisque j'ai attribué à l'option char name[25]

Comment allouer la taille des tableaux de caractères après la lecture de la ligne de commande ? Je suis assez novice en la matière, ne soyez pas trop sévère. Merci de votre compréhension.

0voto

Roland Illig Points 15357
struct visitordata mydata;

memset(mydata, 0, sizeof mydata);

if (scanf("%24s %24s", mydata.name, mydata.email) == 2) {
    ...
}

En memset remplit mydata con 00 octets, afin que votre fichier ne contienne pas de données aléatoires.

Lorsqu'on transmet un tableau à une fonction, seul un pointeur sur le premier élément est réellement transmis, et c'est exactement ce que fait la fonction scanf attend. Notez que pour la lecture d'un int il faut écrire :

if (scanf("%d", &mydata.id) == 1) {
    ...
}

-2voto

fornit Points 34

Utilice strlen(name) pour connaître le nombre de caractères du nom.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X