Fonction ne compile pas !
Wizlee
Messages postés
25
Statut
Membre
-
[Dal] Messages postés 6373 Statut Contributeur -
[Dal] Messages postés 6373 Statut Contributeur -
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é.