Lire et ecrire dans un fichier en c
niki91
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
Jimbo38580 Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
Jimbo38580 Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
je n'y connait rien en c mais il me faudrait un petit prog qui prend en entree un fichier txt ,contenants une suite de mots, le lit et me renvoie le contenu dans un autre fichier txt en remplacant les espaces et sauts de ligne par ce symbole "|" . merci a celui qui pourra m'aider
A voir également:
- C ecrire dans un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
11 réponses
j'ai pas le temps de le faire la, puis ca ne te permettra pas de progresser si tu le fait pas tout seul, alors voila le nom des fonctions dont tu aura besoin recherche leur doc sur le net et tu arrivera a tes fins:
FILE pointeur de fichier
fopen(); ouverture du fichier
fread() lecture fichier;
strcpy strcmp comparaison et copy de chaine de carateres
fclose(); fermeture fichier
COIN!
FILE pointeur de fichier
fopen(); ouverture du fichier
fread() lecture fichier;
strcpy strcmp comparaison et copy de chaine de carateres
fclose(); fermeture fichier
COIN!
j'ai fait ce petit code mais il me remplace pas l'espace par le symbole "|" mais il me le rajoute avant alors comment faire:
#include <stdio.h>
int main(void)
{
FILE *file;
char szBuffer;
if((file = fopen("fichier.txt", "r")) != NULL) //on ouvre le fichier et verifie si on y arrive
{
//si on arrive a ouvrire le fichier tant que l'on est pas a la fin (feof = le premier f g oublier mais les autres c'est End Of File)
while (!feof(file))
{
fread(&szBuffer, 1, 1, file); //on range les caractere dans le buffer
if(szBuffer == '\ ') //si c'est un espace
printf("\|"); //on affiche :" | "
printf("%c", szBuffer); //on affiche ce que contient le buffer
}
}
fclose(file);
}
#include <stdio.h>
int main(void)
{
FILE *file;
char szBuffer;
if((file = fopen("fichier.txt", "r")) != NULL) //on ouvre le fichier et verifie si on y arrive
{
//si on arrive a ouvrire le fichier tant que l'on est pas a la fin (feof = le premier f g oublier mais les autres c'est End Of File)
while (!feof(file))
{
fread(&szBuffer, 1, 1, file); //on range les caractere dans le buffer
if(szBuffer == '\ ') //si c'est un espace
printf("\|"); //on affiche :" | "
printf("%c", szBuffer); //on affiche ce que contient le buffer
}
}
fclose(file);
}
Merci canard007 ca marche bien mais j'ai voulu ajouté le cas où je tombe sur un retour chariot et là il ne le prend pas en compte , pkoi??? ca devrait etre la meme chose ke pour l'espace
#include <stdio.h>
int main(void)
{
FILE *file;
char szBuffer;
if((file = fopen("fichier.txt", "r")) != NULL) //on ouvre le fichier et verifie si on y arrive
{
//si on arrive a ouvrire le fichier tant que l'on est pas a la fin (feof = le premier f g oublier mais les autres c'est End Of File)
while (!feof(file))
{
fread(&szBuffer, 1, 1, file); //on range les caractere dans le buffer
if((szBuffer == '\ ' ) || (szbuffer == '\n')) //si c'est un espace ou un retour chariot
printf("\|"); //on affiche :" | "
else printf("%c", szBuffer); //on affiche ce que contient le buffer
}
}
fclose(file);
}
#include <stdio.h>
int main(void)
{
FILE *file;
char szBuffer;
if((file = fopen("fichier.txt", "r")) != NULL) //on ouvre le fichier et verifie si on y arrive
{
//si on arrive a ouvrire le fichier tant que l'on est pas a la fin (feof = le premier f g oublier mais les autres c'est End Of File)
while (!feof(file))
{
fread(&szBuffer, 1, 1, file); //on range les caractere dans le buffer
if((szBuffer == '\ ' ) || (szbuffer == '\n')) //si c'est un espace ou un retour chariot
printf("\|"); //on affiche :" | "
else printf("%c", szBuffer); //on affiche ce que contient le buffer
}
}
fclose(file);
}
Connaissez vous le site du zero (il apprenent a faire ça beaucoup plus simplement)
COIN vous meme ^^ lol
COIN vous meme ^^ lol
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
faut mettre un else sinon tu recopie ton espace alors que tu veux le remplacer
COIN!
if(szBuffer == '\ ') //si c'est un espace printf("\|"); //on affiche :" | " else printf("%c", szBuffer); //on affiche ce que contient le buffer
COIN!
je veux ecrire dans un fichier "txt" avec le langage CVI de LabWindows merci de m'aide c'est urgent
Réponse à NIKI91:
Pourquoi il annonce erreur dans la gestion du programme, à mon avis,
c'est lié, à la gestion du zbuffer(szbuffer),
qui implique forcément une gestion du retour chariot dans le programme,
puisque là, on veut pouvoir afficher du texte en sortie,
(qui dit texte=>dit (ligne numérique)=>dit (gestion de l'espace mémoire)=>
donc (prise en compte du retour chariot dans le programme en sortie) tout du moins, non?
Pourquoi il annonce erreur dans la gestion du programme, à mon avis,
c'est lié, à la gestion du zbuffer(szbuffer),
qui implique forcément une gestion du retour chariot dans le programme,
puisque là, on veut pouvoir afficher du texte en sortie,
(qui dit texte=>dit (ligne numérique)=>dit (gestion de l'espace mémoire)=>
donc (prise en compte du retour chariot dans le programme en sortie) tout du moins, non?
SELON LE SITE WEB COMMENTCAMARCHE,
EN CODE ASCII, le retour à la ligne
(le retour chariot ou la touche (entrée),
EST :
"CR"
pour CARRIAGE RETURN,
<=> LA TOUCHE ENTREE
=RETOUR CHARIOT,
"=C0, en codage hexadécimal(dans la base héxadécimale)"
"et 13 en codage ASCII,
toujours selon COMMENTCAMARCHE.NET."
EN CODE ASCII, le retour à la ligne
(le retour chariot ou la touche (entrée),
EST :
"CR"
pour CARRIAGE RETURN,
<=> LA TOUCHE ENTREE
=RETOUR CHARIOT,
"=C0, en codage hexadécimal(dans la base héxadécimale)"
"et 13 en codage ASCII,
toujours selon COMMENTCAMARCHE.NET."
Je suis novice pour programmer Je suis un tutoriel pour apprendre mais à peine commencer lorsque je veux faire apparaitre le programme qui dit "Hello Word" celui-ci ne s'ouvre pas .
Juste une page du terminal et dans la Zone de notification il s'écrit :
Checking for existence: /Users/jimmyrimet-piache/Desktop/xxx/monprogramme/bin/Debug/monprogramme
Executing: osascript -e 'tell app "Terminal"' -e 'activate' -e 'do script "/Users/jimmyrimet-piache/Desktop/xxx/monprogramme/bin/Debug/monprogramme "' -e 'end tell' (in /Users/jimmyrimet-piache/Desktop/xxx/monprogramme/.)
Process terminated with status 0 (0 minutes, 1 seconds)
Quelle est le problème ? je ne comprend pas
Juste une page du terminal et dans la Zone de notification il s'écrit :
Checking for existence: /Users/jimmyrimet-piache/Desktop/xxx/monprogramme/bin/Debug/monprogramme
Executing: osascript -e 'tell app "Terminal"' -e 'activate' -e 'do script "/Users/jimmyrimet-piache/Desktop/xxx/monprogramme/bin/Debug/monprogramme "' -e 'end tell' (in /Users/jimmyrimet-piache/Desktop/xxx/monprogramme/.)
Process terminated with status 0 (0 minutes, 1 seconds)
Quelle est le problème ? je ne comprend pas
Ne pas confondre "retour chariot" et "retour a la ligne" !!! pour l'un c'est : 13 l'autre c'est 10
ou encore
"\r" et "\n".
Pour les curieux : https://fr.wikipedia.org/wiki/Fin_de_ligne
Je n'aime pas le wiki, mais bon Gardez l'Esprit Critique
ou encore
"\r" et "\n".
Pour les curieux : https://fr.wikipedia.org/wiki/Fin_de_ligne
Je n'aime pas le wiki, mais bon Gardez l'Esprit Critique
Merci canard007 t'es genial, je sais jsui nul tu peu le dire, jai en fait un autre pb c'est
au niveau du fichier de sortie pour le retour chariot il va quand meme a la ligne ce que je ne veu pa, pkoi???
voici le resultat que j'ai obtenu a partir de 2 ligne ke g donné en entree :
je|suis|nicolas
|je|me|prend|la|tete
||
je voudrai ke tout soit a la suite
mon prog:
#include <stdio.h>
int main(void)
{
FILE *file;
char szBuffer;
if((file = fopen("fichier.txt", "r")) != NULL) //on ouvre le fichier et verifie si on y arrive
{
//si on arrive a ouvrire le fichier tant que l'on est pas a la fin (feof = le premier f g oublier mais les autres c'est End Of File)
while (!feof(file))
{
fread(&szBuffer, 1, 1, file); //on range les caracteres dans le buffer
if ((szBuffer == '\ ' ) || (szBuffer == '\n')) //si c'est un espace ou un retour chariot
printf("\|"); //on affiche :" | "
else printf("%c", szBuffer); //on affiche ce que contient le buffer
}
}
fclose(file);
}
au niveau du fichier de sortie pour le retour chariot il va quand meme a la ligne ce que je ne veu pa, pkoi???
voici le resultat que j'ai obtenu a partir de 2 ligne ke g donné en entree :
je|suis|nicolas
|je|me|prend|la|tete
||
je voudrai ke tout soit a la suite
mon prog:
#include <stdio.h>
int main(void)
{
FILE *file;
char szBuffer;
if((file = fopen("fichier.txt", "r")) != NULL) //on ouvre le fichier et verifie si on y arrive
{
//si on arrive a ouvrire le fichier tant que l'on est pas a la fin (feof = le premier f g oublier mais les autres c'est End Of File)
while (!feof(file))
{
fread(&szBuffer, 1, 1, file); //on range les caracteres dans le buffer
if ((szBuffer == '\ ' ) || (szBuffer == '\n')) //si c'est un espace ou un retour chariot
printf("\|"); //on affiche :" | "
else printf("%c", szBuffer); //on affiche ce que contient le buffer
}
}
fclose(file);
}
cela vient sans doute de ton fichier texte...
regarde le code ascii de tes retour à l ligne (c'est 10 normalement)
mais moi chez moi avec un fichier txt fait a la main ca marche impec
COIN!
regarde le code ascii de tes retour à l ligne (c'est 10 normalement)
mais moi chez moi avec un fichier txt fait a la main ca marche impec
COIN!
Bonjour a tous,
J'aimerai ecrire un programme pour ajouter une donnée dans un fichier nommé affiche.txt
je suis très très mauvais en code et j'aimerai que vous m'aidiez merci.
Voila ce que j'ai tapé mais ca marche pas
Le fichier "affiche.txt" ne s'incrémente pas
void mon_ecrireDVD(BASE* elt, FILE* fic)
{
fprintf (fic,"annee=%d\n",elt->annee);
fprintf (fic,"titre=%s\n",elt->titre);
fprintf (fic,"realisateur=%s\n",elt->realisateur);
fprintf (fic,"acteurs=%s\n",elt->acteurs);
fprintf (fic,"genre=%s\n",elt->genre);
fprintf (fic,"duree=%d\n",elt->duree);
fprintf (fic,"numero=%d\n",elt->numero);
fprintf (fic,"\n\n\n");
}
J'aimerai ecrire un programme pour ajouter une donnée dans un fichier nommé affiche.txt
je suis très très mauvais en code et j'aimerai que vous m'aidiez merci.
Voila ce que j'ai tapé mais ca marche pas
Le fichier "affiche.txt" ne s'incrémente pas
void mon_ecrireDVD(BASE* elt, FILE* fic)
{
fprintf (fic,"annee=%d\n",elt->annee);
fprintf (fic,"titre=%s\n",elt->titre);
fprintf (fic,"realisateur=%s\n",elt->realisateur);
fprintf (fic,"acteurs=%s\n",elt->acteurs);
fprintf (fic,"genre=%s\n",elt->genre);
fprintf (fic,"duree=%d\n",elt->duree);
fprintf (fic,"numero=%d\n",elt->numero);
fprintf (fic,"\n\n\n");
}