Rechercher : dans
Par :

Remplir tableau fichier txt en C

Dernière réponse le 3 jun 2008 à 16:31:08 sophie_m, le 3 jun 2008 à 14:07:07 
 Signaler ce message aux modérateurs

Bonjour,

voila je programme en C j'ai un tableau rempli en dur qui contient des chaines de caractère :
exemple :
char *MesMes[] =
{
/* 0 ID_POINT_INTER4 0 */ "????",
/* 1 ID_FORMATAGE 1 */ "Formatage ......",
/* 2 ID_CONDUCTEUR 2 */ "CONDUCTEUR :",
/* 3 ID_PRISE_DE_SERVICE 3 */ " PRISE DE SERVICE ",
...
}
Je voudrais mettre tout ca dans un fichier texte et ensuite grace a une fonction remplir le tableau grace à ce fichier.
Je n'ai aucune idée de quelle fonction utiliser pour lire le fichier texte, ou placer une à une les chaine de caractères dans le tableau.
Toute aide sera la bienvenue.
Merci d'avance

Configuration: Windows Vista
Internet Explorer 7.0

Meilleures réponses pour « remplir tableau fichier txt en C » dans :
[MS-Dos] Ecrire dans un fichier texte en batch VoirPour écrire dans un fichier texte, il suffit d'utiliser une redirection ">" : echo texte_à_ecrire > fichier_de_sortie.txt Pour écrire à la fin d'un texte existant (concaténation) : echo "écriture a la fin du fichier ">>...
Fichier TXT VoirFormat TXT Un fichier TXT est un fichier texte, c'est-à-dire un simple fichier contenant du texte au format ASCII. Pour ouvrir ou modifier un tel fichier, il suffit d'utiliser le bloc-notes ou un éditeur de texte traditionnel.
Fichier NFO VoirFormat NFO Un fichier NFO est un fichier texte, c'est-à-dire un simple fichier contenant du texte au format ASCII. Un tel fichier accompagne généralement des fichiers en téléchargement pour apporter des informations additionnelles sur...

1

shuya89, le 3 jun 2008 à 14:10:22

Les fonctions pour les fichier sont :

fopen pour ouvrir un fichier
fread pour lire un fichier
fprintf pour erir sur ce ficier voila mais il y a un bon tuto sur le site du zero va y faire un tour et tu trouveras ta solution

Répondre à shuya89

2

sophie_m, le 3 jun 2008 à 14:15:05

Merci beaucoup, je vais allé y faire un tour.

Répondre à sophie_m

3

shuya89, le 3 jun 2008 à 14:16:42

Mais derien c normal

Répondre à shuya89

4

kazou, le 3 jun 2008 à 14:30:51

Tu veux mettre ce qu'il y a dans le tableau dans le fichier ou le contraire ?

si c'est du tableau dans le fichier c'est simple tu fais un fopen
puis une boucle sur la taille de ton tableau et a chaque itération tu fprintf dans ce fichier

confirme si c'est ce que tu voulais ou explique en mieux :)

Répondre à kazou

5

sophie_m, le 3 jun 2008 à 14:34:15

Les deux.n fait la tout est dans un tableau.Mais c'est codé en dur donc "pas bien".
Je pensais mettre manuellement ce qu'il y a dans le tableau dans le fichier txt.
Et ensuite il faut que je prenne mon fichier txt et que je m'en serve pour remplir un nouveau tableau.Tu comprends?

Répondre à sophie_m

6

kazou, le 3 jun 2008 à 14:41:42

Oui ok pour ecrire dans le txt tu fais

FILE * f = fopen("fichier.txt","a+");

for(int i=0;i<SIZE-1;i++)
fprintf(f,"%s",array[i]);

fclose(f);

ca te vas ?

Répondre à kazou

7

sophie_m, le 3 jun 2008 à 14:45:59

Ok merci et pour le reste je pensais fair ca:

#define TAILLE_MAX = 100

void init_tab()
{
int i=0;
char chaine[TAILLE_MAX]="";
FILE* fichier = NULL;
fichier = fopen(essai.txt", "r");
if (fichier != NULL)
{
while ( fgets (chaine, TAILLE_MAX, ficher) != NULL)
{
*MesMes[i]=printf ("ùs", chaine);
i ++;
}
fclose (fichier);
}
retun 0;
}

Répondre à sophie_m

8

kazou, le 3 jun 2008 à 14:50:20

Non
*MesMes[i]=printf ("ùs", chaine);
ne marchera pas la fonction printf renvoi un int qui n'a absolument rien a voir avec ce quelle affiche

Répondre à kazou

9

sophie_m, le 3 jun 2008 à 14:51:21

Mince, tu as une autre idée?

Répondre à sophie_m

10

kazou, le 3 jun 2008 à 14:55:09

Oui le seul problème est de savoir la taille chaque ligne que tu dois mettre dans ton tableau
c'est TAILLE_MAX ?

Répondre à kazou

11

shuya89, le 3 jun 2008 à 14:56:15

Aites un sizeof les gens

Répondre à shuya89

12

sophie_m, le 3 jun 2008 à 14:56:29

Non TAILLE_MAX c'est juste la taille d'une ligne.
La taille du tableau je ne la connait pas.

Répondre à sophie_m

13

shuya89, le 3 jun 2008 à 14:57:29

Et ben sizeof (tableau[numero de ligne])

Répondre à shuya89

14

kazou, le 3 jun 2008 à 15:00:14

Jai mieu pour lecriture tu fais
FILE * f = fopen("fichier.txt","a+");

for(int i=0;i<SIZE-1;i++)
fprintf(f,"%s",array[i]);
fprintf(f,"\n",);

fclose(f);



et pour la lecture tu n'a plus qu'a faire

while ( fgets (f, TAILLE_MAX,buffer))
{
stcpy(buffer, MesMes[i]);
i++;
}


en faite le fgets s'arrete des qu'il rencontre un un saut de ligne donc tu copie toute la ligne dans buffer et tu la copy dans ton tableau en suite

je pense que ca marche confirme moi

Répondre à kazou

15

sophie_m, le 3 jun 2008 à 15:02:26

Excusez moi je ne comprend pas tout.
voila un exemple de fichier txt :
"????",/n
"Formatage ......",/n
"CONDUCTEUR :",/n
" PRISE DE SERVICE ",/n

j'ai lu que fgets s'arretait a chaque /n

pourquoi est ce qu'il me faudrai la taille?

Répondre à sophie_m

16

sophie_m, le 3 jun 2008 à 15:05:22

J'ai une erreur de débutant le compilateur le dit qu'il lui manque le proto
c'est pas void init_tab(); ????

Répondre à sophie_m

17

kazou, le 3 jun 2008 à 15:06:36

La taille c'est juste une précaution fgets va s'arrêter de lire soit a TAILLE soit a \n
donc met une TAILLE assez grande

pour la petite histoire il faut mettre une taille car tu ne peux pas utiliser la fonction gets() qui elle ne nécessite pas de taille , mais ne vérifie pas la taille de ton buffer et peu aller écrire un peu partout dans ta mémoire donc pas bien donc on utilise Fgets

Répondre à kazou

18

kazou, le 3 jun 2008 à 15:07:59

Si tu met un "return 0" c'est
INT init_tab();

Répondre à kazou

19

sophie_m, le 3 jun 2008 à 15:10:10

Ca ne marche pas.
voila mon code :
int init_tab();
#define TAILLE_MAX = 100
void init_tab()
{
int i=0;
char chaine[TAILLE_MAX]="";
FILE * fichier = NULL;
fichier = fopen("essai.txt","r");
if ((fichier !=NULL)
{
while ( fgets (f, TAILLE_MAX,buffer))
{
stcpy(buffer, MesPrt[i]);
i++;
}
fclose(fichier);
}
return(0);
}

voila les erreurs :
"main.c", line 21 pos 7; (W) [ANSI] missing prototype for "init_tab"
"main.c", line 23 pos 6; (W) [ANSI] missing prototype for "init_tab"
"main.c", line 23 pos 6; (E) inconsistent redeclaration of "init_tab"
"main.c", line 26 pos 21; (E) syntax error; unexpected symbol: "="
"main.c", line 27 pos 17; (E) syntax error; unexpected symbol: "="
"main.c", line 30 pos 2; (E) syntax error; unexpected symbol: "{"
"main.c", line 31 pos 27; (E) syntax error; unexpected symbol: "="

Répondre à sophie_m
Collection CommentÇaMarche.net