Comment créer des fichier text en languag c??
Résolu
A voir également:
- Créer un fichier txt en c
- Fichier bin - Guide
- Creer un fichier .bat - Guide
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Comment réduire la taille d'un fichier - Guide
6 réponses
mais je n'arrive pas à les remplir avec un contenu différent dans chaqun, soit mon contenu de text est écraser dans tous les fichier txt, soit tout est mis bout à bout dans tous les fichier txt.
Il faut juste ouvrir ton fichier en "append" si tu veux écrire au bout d'un fichier déjà pré-rempli.
http://www.manpagez.com/missing.php
c'est-à-dire que dans 1 je voudrais écrire: X=1 Y=2
dans le 2 : X=2 Y=3
dans le 3 : X=3 Y=4
Bonne chance
Il faut juste ouvrir ton fichier en "append" si tu veux écrire au bout d'un fichier déjà pré-rempli.
http://www.manpagez.com/missing.php
FILE *fp = fopen("plop.txt","a");
c'est-à-dire que dans 1 je voudrais écrire: X=1 Y=2
dans le 2 : X=2 Y=3
dans le 3 : X=3 Y=4
#include <stdio.h> int main() { FILE *f; char filename[255]; int i; for(i = 1; i < 4; ++i) { sprintf((char *) &filename,"%d.txt", i); printf("Je vais écrire %s\n", filename); f = fopen(filename, "w"); if (f) { fprintf(f,"X=%d Y=%d\n", i, i + 1); fclose(f); } else fprintf(stderr, "Erreur pour écrire %s\n", filename); } return 0; }
Bonne chance
#include "entete.h"
FILE* ouvrir_fichier(char *nomfichier)//On passe le nom du fichier "nomfichier" à la fonction "ouvrir_fichier()" qui retourne un identifiant de fichier.
{
FILE* fichier = NULL;
char* extension = ".txt";//On déclare une chaine de caractères "extension" qui contient l'entension d'un fichier texte.
int taille = strlen(nomfichier);//On déclare une variable entière "taille" qui contient la taille du nom entré.
if( (*((nomfichier)+taille-4)!=46) && (*((nomfichier)+taille-3)!=116) && (*((nomfichier)+taille-2)!=120) && (*((nomfichier)+taille-1)!=116))
strcat_s(nomfichier,strlen(nomfichier)+strlen(extension)+1,extension);
//On teste si l'extension a déjà été mise avec le nom, sinon on ajout le ".txt" au nom entré par l'utilisateur.
fopen_s(&fichier,nomfichier,"r");//On ouvre le fichier "nomfichier" d'identifiant "fichier" et l'option "r" avec la fonction "fopen_s()"
if(fichier!=NULL)//On teste si le fichier exite réellement. Si oui on ferme le fichier existant.
{
printf("le fichier existe\n\n");
fclose(fichier);
}
else
{
printf("le fichier n'existe pas, il va le creer\n\n");
}
fopen_s(&fichier,nomfichier,"a");//On crée le fichier "nomfichier" d'identifiant "fichier" et l'option "r" avec la fonction "fopen_s()"
return fichier;//On retourne l'identifiant du fichier.
}
enregistrement saisie_enr()//On déclare un fonction "saisie_enr()" qui retourne une struture de données "enregistrement".
{
enregistrement dossier;//On déclare une structure "dossier".
do
{
printf("\nVeuiller entrer un nom : ");
fflush(stdin);
}while(scanf_s("%29[a-zA-Z]",dossier.nom,30)==0);
//On demande un nom tant que ce que l'utilisateur entre autre chose que des caractères (a->z et A->Z).
//Et on met la chaine dans "dossier.nom" qui appartient à la structure dossier.
do
{
printf("\nVeuiller entrer un prenom : ");
fflush(stdin);
}while(scanf_s("%19[a-zA-Z]",dossier.prenom,20)==0);
//On demande un prénom tant que ce que l'utilisateur entre autre chose que des caractères (a->z et A->Z).
//Et on met la chaine dans "dossier.prenom" qui appartient à la structure dossier.
do
{
printf("\nVeuiller entrer un numero de telephone : ");
fflush(stdin);
}while((scanf_s("%10[0-9]",dossier.num_tel,11)==0) || (strlen(dossier.num_tel)!=10));
//On demande un nom tant que ce que l'utilisateur entre autre chose que des nombre (0->9).
//Et on met la chaine dans "dossier.num_tel" qui appartient à la structure dossier.
do
{
printf("\nVeuiller entrer une adresse e-mail : ");
fflush(stdin);
}while(scanf_s("%29[a-z0-9@.]",dossier.mail,30)==0);
//On demande un nom tant que ce que l'utilisateur entre autre chose que les caractères: a->z, 0->9 et @.
//Et on met la chaine dans "dossier.mail" qui appartient à la structure dossier.
return dossier;//On retourne la structure "dossier".
}
void ajout_enr(FILE* fp)//On passe un pointeur sur un fichier "file" à la fonction "ajout_enr()"
{
enregistrement dossier;//On crée un enregistrement "dossier" qui va contenir les informations.
dossier=saisie_enr();//On appelle la fonction "saisie_enr()" qui nous retourne toutes les informations entrées dans la structure "dossier".
fprintf(fp,"%s\n%s\n%s\n%s\n\n",dossier.nom,dossier.prenom,dossier.num_tel,dossier.mail);//On copie toute la structure avec un fprintf() auquel on passe l'identifiant du fichier et les données de la structure.
}
void affiche_repertoire(char *nomfichier)//On passe le nom du fichier "nomfichier" à la fonction "affiche_repertoire()"
{
FILE *fichier;//On crée un pointeur sur un fichier "fichier"
fopen_s(&fichier,nomfichier,"r");//On ouvre le fichier "nomfichier" d'identifiant "fichier" et l'option "r" avec la fonction "fopen_s()"
int nbr=0;//On déclare une variable entière "nbr" pour calculer le nombre de ligne.
char buf[256];//On déclare un tableau de 256 caractères "buf".
while(fgets(buf,255,fichier) != NULL)//On lit le fichier tant que le fichier est différent de NULL.
{
nbr++;
}
rewind(fichier);//On rembobine le fichier d'identifiatn "fichier" au début avec la fonction "rewind"
char* contenu = (char*)malloc(nbr*255*sizeof(char*));//On déclare un tableau de "nbr" chaines de 255 caractères nommé "contenu".
char c =(char)getc(fichier);//On prends le premier caractère du fichier ayant pour identifiant "fichier" que l'on met dans "c"
contenu[0]=c;//On met le caractère obtenu dans la première case mémoire du tableau "contenu[]".
int i=0;//On déclare une variable "i" à 0 pour avancer dans le tableau.
while(c!=EOF)//Tant que l'on a pas la fin de fichier, on avance dans le fichier pour mettre tous les caractères dans le tableau.
{
i++;
c=(char)getc(fichier);
contenu[i]=c;
}
fclose(fichier);//On ferme le fichier.
contenu[i]='\0';//On met le caractère le fin de chaine à la fin du tableau.
printf("%s",contenu);//On affiche le contenu du fichier qui est dans "contenu".
}
void Tri_repertoire(char *nom_fichier)
{
FILE *fichier;//On crée un pointeur sur un fichier "fichier"
fopen_s(&fichier,nomfichier,"r");//On ouvre le fichier "nomfichier" d'identifiant "fichier" et l'option "r" avec la fonction "fopen_s()"
int i=0,j=0,x=0,nbr_ligne=0,nbr_personne=0;//On déclare 5 variables entières dont 3 pour les boucles et 2 pour calculer les nombre de lignes et de personnes.
char buffer[256];//On déclare un tableau de 256 caractères "buffer".
while(fgets(buffer,255,fichier))//On lit le fichier tant que le fichier est différent de NULL.
{
nbr_ligne++;
}
nbr_personne = nbr_ligne/5;//On calcule le nombre de personne à partir du nombre de lignes.
fseek(fichier,0,SEEK_SET);//On retourne au début du fichier ayant pour identifiant "fichier".
enregistrement *id = (enregistrement*)malloc(nbr_personne*sizeof(enregistrement));//On crée un tableau d'enregistrements pour "nbr_personne" personnes nommé "id"
char* espace[100];//On crée un tableau de 100 chaines de caractères "espace"
for(i=0;i<nbr_personne;i++)//On crée une boucle pour "nbr_personne" personnes. On met chaque personnes dans chaque case mémoire de "id".
{
fgets(id[i].nom,strlen(id[i].nom),fichier);
printf("%s\n",id[i].nom);
fgets(id[i].prenom,strlen(id[i].prenom),fichier);
printf("%s\n",id[i].prenom);
fgets(id[i].num_tel,strlen(id[i].num_tel),fichier);
printf("%s\n",id[i].num_tel);
fgets(id[i].mail,strlen(id[i].mail),fichier);
printf("%s\n",id[i].mail);
fgets(espace[i],255,fichier);
}
fclose(fichier);//On ferme le fichier ayant pour identifiant "fichier".
for(j=0;j<nbr_personne;j++)// On trie chaque personne par la première lettre de chaque nom. On change chaque enregistrement en cas d'inversion
{
for(i=nbr_personne-1;i>j;i--)
{
if(id[i].nom[0]<id[i-1].nom[0])
{
enregistrement tmp;
tmp=id[i];
id[i]=id[i-1];
id[i-1]=tmp;
}
}
}
fopen_s(&fichier,nom_fichier,"w");//On ouvre le fichier "nomfichier" d'identifiant "fichier" et l'option d'écrasement "w" avec la fonction "fopen_s()"
for(i=0;i<nbr_personne;i++)//On crée une boucle pour "nbr_personne" personnes. On enregistre chaque personnes de chaque case mémoire de "id" dans le fichier.
{
fprintf(fichier,"%s",id[i].nom);
fprintf(fichier,"%s",id[i].prenom);
fprintf(fichier,"%s",id[i].num_tel);
fprintf(fichier,"%s",id[i].mail);
fprintf(fichier,"\n");
}
fclose(fichier);//On ferme le fichier ayant pour identifiant "fichier".
}
FILE* ouvrir_fichier(char *nomfichier)//On passe le nom du fichier "nomfichier" à la fonction "ouvrir_fichier()" qui retourne un identifiant de fichier.
{
FILE* fichier = NULL;
char* extension = ".txt";//On déclare une chaine de caractères "extension" qui contient l'entension d'un fichier texte.
int taille = strlen(nomfichier);//On déclare une variable entière "taille" qui contient la taille du nom entré.
if( (*((nomfichier)+taille-4)!=46) && (*((nomfichier)+taille-3)!=116) && (*((nomfichier)+taille-2)!=120) && (*((nomfichier)+taille-1)!=116))
strcat_s(nomfichier,strlen(nomfichier)+strlen(extension)+1,extension);
//On teste si l'extension a déjà été mise avec le nom, sinon on ajout le ".txt" au nom entré par l'utilisateur.
fopen_s(&fichier,nomfichier,"r");//On ouvre le fichier "nomfichier" d'identifiant "fichier" et l'option "r" avec la fonction "fopen_s()"
if(fichier!=NULL)//On teste si le fichier exite réellement. Si oui on ferme le fichier existant.
{
printf("le fichier existe\n\n");
fclose(fichier);
}
else
{
printf("le fichier n'existe pas, il va le creer\n\n");
}
fopen_s(&fichier,nomfichier,"a");//On crée le fichier "nomfichier" d'identifiant "fichier" et l'option "r" avec la fonction "fopen_s()"
return fichier;//On retourne l'identifiant du fichier.
}
enregistrement saisie_enr()//On déclare un fonction "saisie_enr()" qui retourne une struture de données "enregistrement".
{
enregistrement dossier;//On déclare une structure "dossier".
do
{
printf("\nVeuiller entrer un nom : ");
fflush(stdin);
}while(scanf_s("%29[a-zA-Z]",dossier.nom,30)==0);
//On demande un nom tant que ce que l'utilisateur entre autre chose que des caractères (a->z et A->Z).
//Et on met la chaine dans "dossier.nom" qui appartient à la structure dossier.
do
{
printf("\nVeuiller entrer un prenom : ");
fflush(stdin);
}while(scanf_s("%19[a-zA-Z]",dossier.prenom,20)==0);
//On demande un prénom tant que ce que l'utilisateur entre autre chose que des caractères (a->z et A->Z).
//Et on met la chaine dans "dossier.prenom" qui appartient à la structure dossier.
do
{
printf("\nVeuiller entrer un numero de telephone : ");
fflush(stdin);
}while((scanf_s("%10[0-9]",dossier.num_tel,11)==0) || (strlen(dossier.num_tel)!=10));
//On demande un nom tant que ce que l'utilisateur entre autre chose que des nombre (0->9).
//Et on met la chaine dans "dossier.num_tel" qui appartient à la structure dossier.
do
{
printf("\nVeuiller entrer une adresse e-mail : ");
fflush(stdin);
}while(scanf_s("%29[a-z0-9@.]",dossier.mail,30)==0);
//On demande un nom tant que ce que l'utilisateur entre autre chose que les caractères: a->z, 0->9 et @.
//Et on met la chaine dans "dossier.mail" qui appartient à la structure dossier.
return dossier;//On retourne la structure "dossier".
}
void ajout_enr(FILE* fp)//On passe un pointeur sur un fichier "file" à la fonction "ajout_enr()"
{
enregistrement dossier;//On crée un enregistrement "dossier" qui va contenir les informations.
dossier=saisie_enr();//On appelle la fonction "saisie_enr()" qui nous retourne toutes les informations entrées dans la structure "dossier".
fprintf(fp,"%s\n%s\n%s\n%s\n\n",dossier.nom,dossier.prenom,dossier.num_tel,dossier.mail);//On copie toute la structure avec un fprintf() auquel on passe l'identifiant du fichier et les données de la structure.
}
void affiche_repertoire(char *nomfichier)//On passe le nom du fichier "nomfichier" à la fonction "affiche_repertoire()"
{
FILE *fichier;//On crée un pointeur sur un fichier "fichier"
fopen_s(&fichier,nomfichier,"r");//On ouvre le fichier "nomfichier" d'identifiant "fichier" et l'option "r" avec la fonction "fopen_s()"
int nbr=0;//On déclare une variable entière "nbr" pour calculer le nombre de ligne.
char buf[256];//On déclare un tableau de 256 caractères "buf".
while(fgets(buf,255,fichier) != NULL)//On lit le fichier tant que le fichier est différent de NULL.
{
nbr++;
}
rewind(fichier);//On rembobine le fichier d'identifiatn "fichier" au début avec la fonction "rewind"
char* contenu = (char*)malloc(nbr*255*sizeof(char*));//On déclare un tableau de "nbr" chaines de 255 caractères nommé "contenu".
char c =(char)getc(fichier);//On prends le premier caractère du fichier ayant pour identifiant "fichier" que l'on met dans "c"
contenu[0]=c;//On met le caractère obtenu dans la première case mémoire du tableau "contenu[]".
int i=0;//On déclare une variable "i" à 0 pour avancer dans le tableau.
while(c!=EOF)//Tant que l'on a pas la fin de fichier, on avance dans le fichier pour mettre tous les caractères dans le tableau.
{
i++;
c=(char)getc(fichier);
contenu[i]=c;
}
fclose(fichier);//On ferme le fichier.
contenu[i]='\0';//On met le caractère le fin de chaine à la fin du tableau.
printf("%s",contenu);//On affiche le contenu du fichier qui est dans "contenu".
}
void Tri_repertoire(char *nom_fichier)
{
FILE *fichier;//On crée un pointeur sur un fichier "fichier"
fopen_s(&fichier,nomfichier,"r");//On ouvre le fichier "nomfichier" d'identifiant "fichier" et l'option "r" avec la fonction "fopen_s()"
int i=0,j=0,x=0,nbr_ligne=0,nbr_personne=0;//On déclare 5 variables entières dont 3 pour les boucles et 2 pour calculer les nombre de lignes et de personnes.
char buffer[256];//On déclare un tableau de 256 caractères "buffer".
while(fgets(buffer,255,fichier))//On lit le fichier tant que le fichier est différent de NULL.
{
nbr_ligne++;
}
nbr_personne = nbr_ligne/5;//On calcule le nombre de personne à partir du nombre de lignes.
fseek(fichier,0,SEEK_SET);//On retourne au début du fichier ayant pour identifiant "fichier".
enregistrement *id = (enregistrement*)malloc(nbr_personne*sizeof(enregistrement));//On crée un tableau d'enregistrements pour "nbr_personne" personnes nommé "id"
char* espace[100];//On crée un tableau de 100 chaines de caractères "espace"
for(i=0;i<nbr_personne;i++)//On crée une boucle pour "nbr_personne" personnes. On met chaque personnes dans chaque case mémoire de "id".
{
fgets(id[i].nom,strlen(id[i].nom),fichier);
printf("%s\n",id[i].nom);
fgets(id[i].prenom,strlen(id[i].prenom),fichier);
printf("%s\n",id[i].prenom);
fgets(id[i].num_tel,strlen(id[i].num_tel),fichier);
printf("%s\n",id[i].num_tel);
fgets(id[i].mail,strlen(id[i].mail),fichier);
printf("%s\n",id[i].mail);
fgets(espace[i],255,fichier);
}
fclose(fichier);//On ferme le fichier ayant pour identifiant "fichier".
for(j=0;j<nbr_personne;j++)// On trie chaque personne par la première lettre de chaque nom. On change chaque enregistrement en cas d'inversion
{
for(i=nbr_personne-1;i>j;i--)
{
if(id[i].nom[0]<id[i-1].nom[0])
{
enregistrement tmp;
tmp=id[i];
id[i]=id[i-1];
id[i-1]=tmp;
}
}
}
fopen_s(&fichier,nom_fichier,"w");//On ouvre le fichier "nomfichier" d'identifiant "fichier" et l'option d'écrasement "w" avec la fonction "fopen_s()"
for(i=0;i<nbr_personne;i++)//On crée une boucle pour "nbr_personne" personnes. On enregistre chaque personnes de chaque case mémoire de "id" dans le fichier.
{
fprintf(fichier,"%s",id[i].nom);
fprintf(fichier,"%s",id[i].prenom);
fprintf(fichier,"%s",id[i].num_tel);
fprintf(fichier,"%s",id[i].mail);
fprintf(fichier,"\n");
}
fclose(fichier);//On ferme le fichier ayant pour identifiant "fichier".
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour je souhaiterez creer un fichier .txt. A linterieur de ce fichier je souhaiterai avoir la ligne d'une page .html. Dans cette page .html il y a qu'une seul ligne donc celle que je voudrai creer an .txt. Il faudrai aussi que cette page .txt sactualise toute les 10 secondes. qq peut maider svp
Là je crois que la "boucle" est bouclé... ;-) Merci à tous pour toutes ces réponses, le sujet est terminé depuis un moment et ces réponses m'ont permis de réaliser un projet de calcul des structure (analyse modale en vibration) en entier et de valider les théories abordées. Merci donc pour ce dernier message qui est très complet et qui permettra certainement à d'autres de revenir sur ce genre de problème.
Bien cordialement,
Sabug.
Bien cordialement,
Sabug.
Sabug
Ensuite on essaye d'écrire dans ce fichier, pointé par f. S'il a été ouvert avec succès (f != NULL), alors on écrit dans f les valeurs de X et Y qui sont en fait "i" et "i+1". Puis on ferme le fichier.
Sinon on n'est pas parvenu à écrire le fichier. Dans ce cas on affiche un message d'erreur. Comme le fichier n'a pas été ouvert, on n'a pas à le fermer.
On répète le procédé pour chaque valeur de i, puis on quitte le programme proprement.
f = fopen(filename, "w");
Le paramètre "w" sert à dire à fopen d'ouvrir le fichier en écriture (et ça écrase son éventuel contenu, contrairement à "a", le mode append).