Probleme de lecture d' un fichier en C
sdfsam
Messages postés
60
Date d'inscription
Statut
Membre
Dernière intervention
-
sdfsam Messages postés 60 Date d'inscription Statut Membre Dernière intervention -
sdfsam Messages postés 60 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
mon programme en c n'arrive pas à afficher mon fichier , je veux le faire de telle sorte qu'il me demande d'abord d'entrer le nom de fichier puis le lire mais ça marche pas?????????
quand je fais la lecture sans la partie en gras ça passe.
svp est ce que il y a quelqu'un pour m'aider??
merci d'avance mes amis de savoir
PROGRAMME
#include <stdlib.h>
#include <stdio.h>
FILE* f ;
char nom[20];
int main()
{
int ca;
printf("entrer le nom de file:\n");
scanf("s",&nom);
f=fopen("&nom", "r");
caractere= fgetc(f);
if(f==NULL)
if ((f=fopen("lire.txt", "r"))== NULL)
{
printf("\t\t\n\n\nLe fichier n'existe pas!\n \t\t \n");
getchar();
exit(0);
}
{
caractere= fgetc(f); // On initialise le caractère ou on se trouve
// Boucle de lecture des caractères un à un
while (caractere!=EOF) // On continue jusqu'à la fin de fichier
{
printf("%s", caractere); // On affiche le caractère stocké dans caractere ou on se trouve
caractere= fgetc(f); // On lit le caractère suivant
}
fclose(f);
}int get_nb_lines(FILE*f);
getchar();
return 0;
}
mon programme en c n'arrive pas à afficher mon fichier , je veux le faire de telle sorte qu'il me demande d'abord d'entrer le nom de fichier puis le lire mais ça marche pas?????????
quand je fais la lecture sans la partie en gras ça passe.
svp est ce que il y a quelqu'un pour m'aider??
merci d'avance mes amis de savoir
PROGRAMME
#include <stdlib.h>
#include <stdio.h>
FILE* f ;
char nom[20];
int main()
{
int ca;
printf("entrer le nom de file:\n");
scanf("s",&nom);
f=fopen("&nom", "r");
caractere= fgetc(f);
if(f==NULL)
if ((f=fopen("lire.txt", "r"))== NULL)
{
printf("\t\t\n\n\nLe fichier n'existe pas!\n \t\t \n");
getchar();
exit(0);
}
{
caractere= fgetc(f); // On initialise le caractère ou on se trouve
// Boucle de lecture des caractères un à un
while (caractere!=EOF) // On continue jusqu'à la fin de fichier
{
printf("%s", caractere); // On affiche le caractère stocké dans caractere ou on se trouve
caractere= fgetc(f); // On lit le caractère suivant
}
fclose(f);
}int get_nb_lines(FILE*f);
getchar();
return 0;
}
A voir également:
- Probleme de lecture d' un fichier en C
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
5 réponses
Bonjour,
scanf("s",&nom);
Le compilateur doit gronder en voyant ça. Il faut mettre plutôt :
scanf("%s",nom); ou mieux : scanf("%19s", nom);
f=fopen("&nom", "r");
A moins que le fichier s'appelle vraiment "&nom", ça ne marchera pas.
Ce que tu souhaites faire est : f=fopen(nom,"r");
printf("%s", caractere);
Je n'ai pas vu ta déclaration de ta variable caractere. Mais ce n'est pas cohérent la façon dont tu t'en sers. Tu lis un caractère avec fgetc que tu stockes dans ladite variable. Et après tu affiches avec printf une chaîne de caractère... Il faudrait mettre plutôt : printf("%c",caractere); ou plus simplement : putchar(caractere);
int get_nb_lines(FILE*f);
Tu souhaites faire quoi avec ça ??? Une fonction ?
Si c'est le cas, il ne faut pas le mettre dans la fonction main.
Attention à l'usage un peu hasardeux de tes accolades.
Et enfin, il vaut mieux éviter les variables globales comme tu as fait avec FILE *f et char nom[nom];
Si la correction de toutes ces erreurs ne marchent pas, repose ton code avec les corrections apportées et n'oublie surtout pas d'utiliser les balises code (à droite du bouton souligné).
Cdlt,
scanf("s",&nom);
Le compilateur doit gronder en voyant ça. Il faut mettre plutôt :
scanf("%s",nom); ou mieux : scanf("%19s", nom);
f=fopen("&nom", "r");
A moins que le fichier s'appelle vraiment "&nom", ça ne marchera pas.
Ce que tu souhaites faire est : f=fopen(nom,"r");
printf("%s", caractere);
Je n'ai pas vu ta déclaration de ta variable caractere. Mais ce n'est pas cohérent la façon dont tu t'en sers. Tu lis un caractère avec fgetc que tu stockes dans ladite variable. Et après tu affiches avec printf une chaîne de caractère... Il faudrait mettre plutôt : printf("%c",caractere); ou plus simplement : putchar(caractere);
int get_nb_lines(FILE*f);
Tu souhaites faire quoi avec ça ??? Une fonction ?
Si c'est le cas, il ne faut pas le mettre dans la fonction main.
Attention à l'usage un peu hasardeux de tes accolades.
Et enfin, il vaut mieux éviter les variables globales comme tu as fait avec FILE *f et char nom[nom];
Si la correction de toutes ces erreurs ne marchent pas, repose ton code avec les corrections apportées et n'oublie surtout pas d'utiliser les balises code (à droite du bouton souligné).
Cdlt,
merci pour vos explication
et cmt je peux faire un traitement bien defini de mes données dans le fichier selon une fonction
ou et comment je vais inserer cette fonction dans mon code
et cmt je peux faire un traitement bien defini de mes données dans le fichier selon une fonction
ou et comment je vais inserer cette fonction dans mon code
c'est pas claire
je veux traiter mes donner de telle sorte de sortir les informations necessaire.
mes données sont : soit des porte logique ou leur entrées
exp: g*1 g+2 e+1 signifie que la porte g*1 est AND numéro1 et g+2 porte OR numéro 2 et e+1 evenemt normal c'est des appleation.
je dois faire un traitement
j'ai fais un code mais marche pas
je veux traiter mes donner de telle sorte de sortir les informations necessaire.
mes données sont : soit des porte logique ou leur entrées
exp: g*1 g+2 e+1 signifie que la porte g*1 est AND numéro1 et g+2 porte OR numéro 2 et e+1 evenemt normal c'est des appleation.
je dois faire un traitement
j'ai fais un code mais marche pas
Au lieu de reposter sur un autre sujet, tu ferais mieux de continuer ici.
Sinon pour traiter le fichier, cela dépend comment sont codées les informations.
Si c'est toujours : 1 caractère, 1 opérateur, un caractère, ...
Alors, il te suffit de faire des fgetc pour lire le fichier et récupèrer les données caractère par caractère. Après, un switch pour déterminer l'opérateur fera l'affaire.
Cdlt,
Sinon pour traiter le fichier, cela dépend comment sont codées les informations.
Si c'est toujours : 1 caractère, 1 opérateur, un caractère, ...
Alors, il te suffit de faire des fgetc pour lire le fichier et récupèrer les données caractère par caractère. Après, un switch pour déterminer l'opérateur fera l'affaire.
Cdlt,
merci de m'avoir repondu,
desolé vous m'avez pas compris les informations dans le fichier sont codées de la maniere suivant:
<Portelogique> <espace> <Entrées de cette porte logique>
or on peut faire desappellation comme on veux moi j'ai opté à les appellations
dessus
EXPLICATION: les portes
g--> pour gate
*--> porte and
+--> porte OR
1,2--> indexe de la porte
donc
g*1--> signifie PORTE AND numéro1
LES EVENEMETS:
e: evenement
n: normal
c: complementair
1,2 indexe
en1-->événement normal numéro1
ec1-->événement normal numéro1
j'espère que vous m'avez compris avec cette explication.
merci de m'aider
desolé vous m'avez pas compris les informations dans le fichier sont codées de la maniere suivant:
<Portelogique> <espace> <Entrées de cette porte logique>
or on peut faire desappellation comme on veux moi j'ai opté à les appellations
dessus
EXPLICATION: les portes
g--> pour gate
*--> porte and
+--> porte OR
1,2--> indexe de la porte
donc
g*1--> signifie PORTE AND numéro1
LES EVENEMETS:
e: evenement
n: normal
c: complementair
1,2 indexe
en1-->événement normal numéro1
ec1-->événement normal numéro1
j'espère que vous m'avez compris avec cette explication.
merci de m'aider
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question