ender08450
Messages postés7Date d'inscriptionmardi 26 décembre 2006StatutMembreDernière intervention27 décembre 2006
-
27 déc. 2006 à 15:22
ender08450
Messages postés7Date d'inscriptionmardi 26 décembre 2006StatutMembreDernière intervention27 décembre 2006
-
27 déc. 2006 à 16:46
/* En gros, ce que je voudrais faire: L'utilisateur rentre le nom d'un fichier texte, et le programme que j'essai de faire
dois rentrer tous les caratéres de ce fichier dans un tableau à une dimenion. J'arrive à ouvrir le fichier, à lire le tableau à
la fin.
Mais je n'arrive pas à rentrer les tous les caractéres dans mon tableau.
J'ai aussi un petit doute de pointeur vers fichier dans le programme principale.
Je suis un débutant, il est frot probable qu'il y est d'autre erreurs ...désolé*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include //je sais y en a un peu trop, mais ca me servira plus tard.
#include<conio.h>
#include<math.h>
#define MAX 10000 // Nombre maximal de caractére du texte à mettre ds le tableau
//fonction pour l'ouverture du fichier
int OUVERTURE()
{
FILE *fichier;
char nomfichier[100];
int i=0;
cout<<endl<<"Saisissez le nom du fichier a ouvrir: ";
cin>>nomfichier;
fichier = fopen(nomfichier,"r");
if(fichier==NULL)
cout<<endl<<"Probleme lors de l'ouverture du fichier"<<endl;
else
{
cout<<endl<<"Ouverture du fichier réussi"<<endl;
i = 1;
}
return i;
}//fin de la fonction pour l'ouverture du fichier
//programme principale
int main()
{
OUVERTURE();
FILE *fichier; //je me demande si dans "fichier" il y a toujours le fichier texte que j'ai demandé
d'ouvrir dans la fonction. et sinon, comment faire ?
int i = 0;
char Tab[MAX];
//C'est là que ca coince, Je voudrais rentrer tous les caractéres du fichier dans un tableau à une dimension.
//Et ce en utilisant la fonction fgets ! ou fscanf !
//Si vous pouviez me montrer les deux solutions ou me dire qu'elle est là différence, ce serait cool!
while(!feof(fichier) && i<MAX)
{
fgets(Tab[i],char,fichier);
i=i+1;
}
i=0; //je réinitialise mon compteur
// On affiche le tableau pour etre sur que tout s'est bien passé...
while(i<MAX)
{
printf("%c\n",Tab[i]);
i=i+1;
}
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 27 déc. 2006 à 15:30
yop,
fgets(Tab[i],char,fichier); ? déjà char ne veut rien dire ;) sizeof(char) serai mieu. Mais pour être sur de récupérer 1 caractère a la fois utilise plutot la fonction fgetc ;) comme ca tu lit ton fichier caractères par caractères :p et les problèmes partirons .
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 27 déc. 2006 à 15:49
Je me répette mais...
Évitez de lire un fichier caractère par caractère. C'est mortel niveau performence. Beaucoup plus rapide de lire tout d'un coup dans un buffer.
Exemple:
#include <stdlib.h>
#include <stdio.h>
#include
FILE *fichier = fopen("fichier", "r");
char *buffer;
int len;
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 27 déc. 2006 à 15:53
Et aussi, ton fichier dans ton main de pointe sur rien. Ça ne fonctionne pas comme ça. On ne transfère pas une valeur d'une fonction a une autre en la redéclarent simplement. Il faudrait que ton OUVERTURE retourne fichier pour faire comme suit dans ton main:
FILE *fichier = OUVERTURE();
Ou alors, tout faire directement dans une fonction ou dans main.
ender08450
Messages postés7Date d'inscriptionmardi 26 décembre 2006StatutMembreDernière intervention27 décembre 2006 27 déc. 2006 à 15:58
J'ai reéditer mon programme(notament le prb de fichier qui pointait sur rien), il marche mais plante à la partie ou je veux rentrer les caractéres dans mon tableau.
SAKingdom, ta solution semble parfaite, mais je ne voudrais utiliser que fscanf ou fgets, c'est un projet à faire en cours, et nous n'avons pas vue les fonctions que tu utilises. Je suis un débutant.
/* En gros, ce que je voudrais faire: L'utilisateur rentre le nom d'un fichier texte, et le programme que j'essai de faire
dois rentrer tous les caratéres de ce fichier dans un tableau à une dimenion. J'arrive à ouvrir le fichier, à lire le tableau à
la fin.
Mais je n'arrive pas à rentrer les tous les caractéres dans mon tableau.
Je suis un débutant, il est frot probable qu'il y est d'autre erreurs ...désolé*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include //je sais y en a un peu trop, mais ca me servira plus tard.
#include<conio.h>
#include<math.h>
#define MAX 10000 // Nombre maximal de caractére du texte à mettre ds le tableau
int main()
{
FILE *fichier;
char nomfichier[100];
char Tab[MAX];
int i=0;
cout<<endl<<"Saisissez le nom du fichier a ouvrir: ";
cin>>nomfichier;
fichier = fopen(nomfichier,"r");
if(fichier==NULL)
{
cout<<endl<<"Probleme lors de l'ouverture du fichier"<<endl;
system("PAUSE");
exit(0);
}
else
cout<<endl<<"Ouverture du fichier réussi"<<endl;
//C'est là que ca coince, Je voudrais rentrer tous les caractéres du fichier dans un tableau à une dimension.
//Et ce en utilisant la fonction fgets ! ou fscanf ! Mais je sais pas trop les utiliser.
//Si vous pouviez me montrer les deux solutions ou me dire qu'elle est là différence, ce serait cool !
while(!feof(fichier) && i<MAX)
{
fscanf(fichier,"%c",Tab[i]);
i=i+1;
}
i=0; //je réinitialise mon compteur
// On affiche le tableau pour etre sur que tout s'est bien passé...
while(i<MAX)
{
printf("%c\n",Tab[i]);
i=i+1;
}