Probleme de string et de cast
Bonjour à tous.
J'ai un problème (ptetr tout bete pour vous gds gourous du C) avec ce code (entre autres... :D) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
/*
MODULE : CREER enregistrement du texte
Role : manipulation d'un enregistrement de 30 mots
Structures manipulees : enregistrement
Dependances : <stdio.h>
*/
#include <stdio.h>
#include "createRecord.h"
FILE * ptrFich;
/*
Nom : createRecord
Role : creer un enregistrement de 30 mots pour faciliter et accelerer le traitement du texte à indexer
Signature : FILE * -> ENREGISTREMENT *
Entrée : -
Sortie : ENREGISTREMENT * record
MAJ : -
Dependances : <stdio.h>
Algorithme :
DEBUT
indice : entier, indice de parcours du tbl;
indice<-0;
Lire le fichier pointé par ptrFile;
TANT_QUE indice<30 FAIRE
indice++;
record(indice)<-mot_courant;
FIN_TANT_QUE
Retourner record;
FIN
*/
char * createRecord(FILE * ptrFile)
{
int nb_mots;
char tab_enr[50];
char * mot;
char caractere;
char sep[]="|-><,(); :.\'\t\0 «»";
nb_mots=0;
if (ptrFile!=NULL)
{ ptrFich=ptrFile;
}
while (!feof(ptrFich) || fgetc(ptrFich)!='\n')
{ caractere=fgetc(ptrFich);
int i=0;
int bool=0;
//on cherche si le caractère correspond à un séparateur dans le
//tableau de séparateur
while (i<16 || bool==1)
{ if (caractere==sep[i])
bool=1;
}
//si ce n'est pas un séparateur on écrit le mot
if (bool==0)
{ strcat(mot,caractere);
}
else
{ tab_enr[nb_mots]=mot;
nb_mots ++;
}
i++;
}
tab_enr[nb_mots]='/n';
return tab_enr;
} |
Voici les messages obtenus à la compilation :
Citation:
gcc -W createRecord.c -o createRecord
createRecord.c:8:26: createRecord.h: No such file or directory
createRecord.c: In function `createRecord':
createRecord.c:60: warning: passing arg 2 of `strcat' makes pointer from integer without a cast
createRecord.c:63: warning: assignment makes integer from pointer without a cast
createRecord.c:68:19: warning: multi-character character constant
createRecord.c:68: warning: overflow in implicit constant conversion
createRecord.c:69: warning: function returns address of local variable
Je comprends pas... Certes ce ne sont "que" des warnings mais c inquiétant vu leur nature !
Pouvez-vous m'aider ?
Pourquoi les pointeurs de char ne sont ils pas acceptés comme cela devrait l'^etre au vu du man des fonctions utilisees.
Merci d'avance.