Créer et reluire un fichier
mobo
-
cchristian Messages postés 928 Statut Membre -
cchristian Messages postés 928 Statut Membre -
Bonjour,
j'ai un probleme avec l'exercice suivant:
Enoncé:
créer et relire un fichier texte de 5 chaines de 3 caracteres, ajouter une chaine de 3 caracteres et relire à nouveau.
voici ma solution (à corrigée)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{int i;
char nomfi[20];
char nomcar[4];
FILE*fiche;
printf("entrez nom fichier:\n");
scanf("%20s", nomfi);
fiche=fopen(nomfi, "w");
for(i=0; i<5; i++)
{
printf("saisir la chaine numero %d:\n", i+1);
scanf("%3s", nomcar);
fwrite(nomcar, sizeof(int), 5, fiche);
}
fclose(fiche);
fiche=fopen(nomfi, "r");
for(i=0; i<5; i++)
{
fread(nomcar, sizeof(int), 5, fiche);
printf("\n%3s\n",nomcar);
}
fclose(fiche);
system("PAUSE");
return 0;
}
le probleme que j'ai est que:
1- je ne suis même pas sur si je suis dans l'idée de l'exercice
2- je n'arrive pas à relir la chaine de 3 caracteres.
j'ai un probleme avec l'exercice suivant:
Enoncé:
créer et relire un fichier texte de 5 chaines de 3 caracteres, ajouter une chaine de 3 caracteres et relire à nouveau.
voici ma solution (à corrigée)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{int i;
char nomfi[20];
char nomcar[4];
FILE*fiche;
printf("entrez nom fichier:\n");
scanf("%20s", nomfi);
fiche=fopen(nomfi, "w");
for(i=0; i<5; i++)
{
printf("saisir la chaine numero %d:\n", i+1);
scanf("%3s", nomcar);
fwrite(nomcar, sizeof(int), 5, fiche);
}
fclose(fiche);
fiche=fopen(nomfi, "r");
for(i=0; i<5; i++)
{
fread(nomcar, sizeof(int), 5, fiche);
printf("\n%3s\n",nomcar);
}
fclose(fiche);
system("PAUSE");
return 0;
}
le probleme que j'ai est que:
1- je ne suis même pas sur si je suis dans l'idée de l'exercice
2- je n'arrive pas à relir la chaine de 3 caracteres.
A voir également:
- Créer et reluire un fichier
- Creer un fichier .bat - Guide
- Fichier bin - Guide
- Comment créer un groupe whatsapp - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
1 réponse
Bonsoir,
J'ai fait une petite correction de ton code, par contre je ne sais absolument pas comment faire reluire un fichier.
Sinon c'était pas mal du tout,
J'ai fait une petite correction de ton code, par contre je ne sais absolument pas comment faire reluire un fichier.
//Oubli de int devant main (erreur à la compilation)
int main()
{
//Initialise les variables.
int i = 0;
//Initialise les tableaux et prévois les plus grand. (au-delà ça plante !)
char nomfi [64] = "";
char nomcar [16] = "";
FILE*fiche;
//Précise davantage le sens des libellés des messages.
while ( strlen (nomfi) < 5 || strlen (nomfi) > 20 )
{
printf ("\n\n Entrez un nom fichier et son extension"
" (minimum 5 c. - maximum 20 c.) : \n");
scanf ("%64s", nomfi);
if (strlen (nomfi) < 5 || strlen (nomfi) > 20 )
{
printf ("\n nom de fichier incohérent \n");
};
//Ici on pourrait pousser davantage les tests de cohérence ....
}
fiche = fopen (nomfi, "w");
for (i = 0; i < 5; i++)
{
printf ( "\n\n Saisir la chaine numero %d constitu\202e de "
"3 c. au maximum : \n", i+1);
while ( strlen (nomcar) != 3 )
{
scanf ( "%16s", nomcar );
if ( strlen (nomcar) != 3 )
{
printf ("\n Longueur de la chaine de caractères"
" différente de 3 \n");
}
//Ici on pourrait pousser davantage les tests de cohérence ....
}
// Pourquoi sizeof (int) ? tu fais : scanf ( "%3s", nomcar );
// fwrite ( nomcar, sizeof (int), 5, fiche );
fwrite ( nomcar, sizeof (char), 3, fiche );
nomcar [0] = '\0';
}
//Tu avais oublié cette séquence (ajout de 3 caractères)
//-----------------------
fclose ( fiche );
fiche = fopen (nomfi, "a+");
fwrite ( "***", sizeof (char), 3, fiche );
fclose ( fiche );
// -----------------------
fiche = fopen ( nomfi, "r" );
for ( i = 0; i < 6; i++ )
{
fread (nomcar, sizeof(char), 3, fiche);
printf ( "\n%3s\n", nomcar );
}
fclose ( fiche );
system ( "PAUSE" );
return ( 0 );
}
Sinon c'était pas mal du tout,