Fonction ne compile pas !
Wizlee
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
void Dico() { FILE* testeur=NULL; testeur=fopen("Dico.txt","r+"); if(testeur==NULL) { printf("erreur de Fichier\n"); } else { int NbrMot=10,Case=0 ,taille1=10, taille2=10; int caractere='e'; char **MotCaches=NULL; do { MotCaches[Case]=malloc(taille2*sizeof(char)); if(MotCaches[Case]==NULL) { printf("erreur de taille2\n\n"); exit(0);} else { /* int NumH=0; //=========== Nombre Aleatoir =========== srand(time(NULL)); NumH=(rand()%(NbrMot-min+1))+min; printf("%d",NumH); //======================================= //printf("%s",MotCaches[NumH]); */ char *MotCache1=NULL; int i=0; do { caractere=fgetc( testeur ); i++; }while( caractere != '\n' ); int tailleDu1=i; taille1=tailleDu1; MotCache1=malloc(taille1*sizeof(char)); if(MotCache1==NULL) { printf("erreur de Taille1\n"); exit(0);} else { do { fseek(testeur, -taille1, SEEK_CUR); caractere=fgetc( testeur ); MotCache1[i]=caractere; i++; }while( caractere != '\n' ); printf( "%s",MotCache1 ); MotCaches[Case]=MotCache1; } free(MotCache1); Case++; int j=0; do { caractere=fgetc( testeur ); j++; }while( caractere != '\n' ); int tailleMSuiv=j; taille2=tailleMSuiv; fseek(testeur,-taille2, SEEK_CUR); } }while( caractere != EOF ); free(MotCaches); } fclose(testeur); }
Mon But est de créer un Tableau de chaîne de Caractères...Merci d'avance !
A voir également:
- Fonction ne compile pas !
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
2 réponses
#include <stdlib.h>
void free_tab(char **tab)
{
int i;
i = 0;
if (tab == NULL || tab[0] == '\0')
return ;
while (tab[i] != NULL)
{
free(tab[i]);
i += 1;
}
free(tab);
}
char **tab(int x, int y)
{
int i;
char **tab;
i = 0;
if (x >= 0 || y >= 0)
return (NULL);
if ((tab = malloc(sizeof(char *) * (x + 1))) == NULL)
return (NULL);
tab[x] = NULL;
while (i < x)
{
if ((tab = malloc(sizeof(char *) * (y + 1))) == NULL)
return (NULL);
i += 1;
}
return (tab);
}
La fonction tab te permet de créer un "tableau' de string, avec x comme nombres de string, et y la taille fix d'un string.
free_tab te permet, de libéré l’espace ton ton tableau
Re,
J'ai pas mal de petites questions du style, à la ligne 15 y'a int caractere='e';
Pourquoi un int pour un caractère ? un char suffit.
Puis, comment tu compiles ? pourrions nous avoir le message d'erreur de la compilation ?
Il est ou ta fonction main() ? tu l'appels comment ta fonction Dico ?
Es tu aux courent que ta fonction Dico ne retourne rien ?
As-tu mis les librairie pour fopen fseek etc... ?
J'ai pas mal de petites questions du style, à la ligne 15 y'a int caractere='e';
Pourquoi un int pour un caractère ? un char suffit.
Puis, comment tu compiles ? pourrions nous avoir le message d'erreur de la compilation ?
Il est ou ta fonction main() ? tu l'appels comment ta fonction Dico ?
Es tu aux courent que ta fonction Dico ne retourne rien ?
As-tu mis les librairie pour fopen fseek etc... ?
Salut Tomsuper,
Wizlee n'a pas encore répondu à tes questions et suggestions.
Cela dit, juste une observation à propos de ta question et affirmation : "Pourquoi un int pour un caractère ? un char suffit."
Le type de la variable
http://www.cplusplus.com/reference/cstdio/fgetc/
P.S. :
Tomsuper, ton code ne s'affiche pas avec coloration syntaxique car tu as cliqué sur le bouton pour des balises de code génériques. Il faut utiliser la liste déroulante à côté de ce bouton et choisir le langage "c" pour insérer des balises <code c> </code> qui produiront l'effet recherché.
Wizlee n'a pas encore répondu à tes questions et suggestions.
Cela dit, juste une observation à propos de ta question et affirmation : "Pourquoi un int pour un caractère ? un char suffit."
Le type de la variable
int caractere;me paraît correct, car cette variable est utilisée pour recevoir le résultat de
fgetc()qui retourne un
int(ce prototype permet à cette fonction de pouvoir retourner
EOF, qui, d'ailleurs est testé dans le code proposé par Wizlee, et qui, par définition, ne peut pas correspondre à une valeur valide pour un
char).
http://www.cplusplus.com/reference/cstdio/fgetc/
P.S. :
Tomsuper, ton code ne s'affiche pas avec coloration syntaxique car tu as cliqué sur le bouton pour des balises de code génériques. Il faut utiliser la liste déroulante à côté de ce bouton et choisir le langage "c" pour insérer des balises <code c> </code> qui produiront l'effet recherché.