Définir tout les mots palindromes dans un fichier texte

Fermé
joujou98 - Modifié le 9 déc. 2018 à 17:53
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 - 9 déc. 2018 à 19:59
Bonjour, je veux écrire une fontion qui détermine les mots palindrome dans un fichier dictionnaire et les mettre avec leurs définition dans un nouveau fichier txt "palindromes" , la structure du fichier dictionnaire est " mot:definition "


void palindromes (FILE* fich)
{
FILE *pd=NULL ;char *tmp2=NULL ,*tmp=NULL;
pd=fopen("palindromes.txt","a+");
char line [ 128 ]; int n=0; char c; int i=0;

while ( fgets ( line, sizeof line, fich ) != NULL )
{ n=0;
printf("Ligne : %s", line);

while(line[n] != ':')
{
n++;
}

tmp=(char*)malloc(n+1);
strncpy(tmp,line,n);
printf("%s \n",tmp);
int k=0;
int len=strlen(tmp);
k=palindrome(tmp);
if(k== 1)

{
int j=n;
while (line[j] != '\0')
{ j++ ;}
tmp2=malloc(n+1);
strncpy(tmp2,line+n,j);
strcat(tmp+n,tmp2);
if (pd != NULL)
{
fprintf(pd,"%s",tmp);


}
}
free(tmp);
free(tmp2);
}
fclose(pd);
}

mon probleme c'est que quand j'affiche avec printf
  tmp=(char*)malloc(n+1);
strncpy(tmp,line,n);
printf("%s \n",tmp);


<code>
un caractere de plus s'affiche à la fin d'un mot qui est palindrome
par exemple : Ligne : higgih:bbbb
elle ma'ffiche higgihI par exemple !
Configuration: Windows / Firefox 63.0
A voir également:

1 réponse

yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 Ambassadeur 1 557
9 déc. 2018 à 19:59
bonjour, cela me semble normal, puisque tu ne fais rien pour que tmp pointe vers une chaîne de caractères terminée par un caractère null. que vaut len?
suggestion:
tmp[n] = '\0';
0