Bonjour!
Je suis sous Linux et j'utilise Code::Blocks pour compiler mes programmes.
Je débute en C et je fais les quelques exercices qu'il y a dans le livre de Delannoy mais j'ai un problème avec un exercice.
C'est un exercice pour utiliser les commandes de création et d'écriture séquentielle d'un fichier.
Le problème étant qu'une fois le fichier créé, s'il a été rempli via le programme, impossible de le lire.
Voici mon programme :
Et voici la solution donné par Delannoy :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 #include <stdio.h> #include <string.h> main() { struct infos {char nom[21]; char prenom[16]; int age; char tel[10];}; struct infos personne; char nomfich[21]; FILE * sortie; printf("Donnez un nom à votre fichier : "); scanf("%20s", nomfich); getchar(); sortie = fopen(nomfich, "w"); while (1) { printf("\n"); printf("Nom : "); gets(personne.nom); if(!strlen(personne.nom)) break; printf("Prénom : "); gets(personne.prenom); printf("Age : "); scanf("%3d", &personne.age); getchar(); printf("Numéro de téléphone : "); gets(personne.tel); fwrite(&personne, sizeof(personne), 1, sortie); } fclose(sortie); }
Ca bloque à partir du moment ou le tampon est écrit dans le fichier via la commande 'fclose' et en fait soit j'ai un fichier qu iest pris pour un fichier image masi impossible de le lire soit un fichier qui est strictement illisible, aucun programme n'est en mesure de me le lire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #include <stdio.h> #include <string.h> #define LGNOM 20 #define LGPRENOM 15 #define LGTEL 11 main() { char nomfich[21]; FILE * sortie; struct { char nom[LGNOM+1]; char prenom[LGPRENOM+1]; int age; char tel[LGTEL+1]; } bloc; printf("Donnez le nom du fichier à créer : "); gets(nomfich); sortie = fopen(nomfich, "w"); printf("----- pour finir la saisie, donnez un nom vide -----\n"); while(printf("Nom : "), gets(bloc.nom),strlen(bloc.nom)) { printf("Prénom :"); gets(bloc.prenom); printf("Age : "); scanf("%d", &bloc.age); getchar(); printf("Téléphone : "); gets(bloc.tel); fwrite(&bloc, sizeof(bloc), 1, sortie); } fclose(sortie); }
Merci de m'aider!![]()
Partager