Retourner une chaine de caractere grace a une fonction[c]

mitchipecket Messages postés 4 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 décembre 2005 - 8 déc. 2005 à 11:59
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 8 déc. 2005 à 15:56
Bonjour,

J'ai écrit un programme qui élimine d'un mot1 toutes les lettres qui apparaissent aussi dans un mot2 grace a la fonction STRSUP.
Mais je n'arrive pas a retourner le mot 1 dont les lettres ont été supprimées. Je sais qu'il manque un "return" mais je ne sais pas quoi mettre dedans.
Merci

Code:

#include<stdio.h>
#include<string.h>


char STRSUP (char*, char*, int, int);
void main()
{
char mot1[26];
char mot2[26];
int nblt1, nblt2;


printf("Entrez le premier mot : ");
fflush(stdin);
scanf("%s", &mot1);


printf("\nEntrez le second mot : ");
fflush(stdin);
scanf("%s", &mot2);


nblt1 = strlen(mot1);
nblt2 = strlen(mot2);


printf("Lettre non presente dans mot2 : %s\n", STRSUP(&mot1[0], &mot2[0], nblt1, nblt2));


}


char STRSUP (char *pt, char* pt2, int nblt1, int nblt2)
{
int i, j, tmp, k;


for(i=0; i<nblt1; i++)
{
for(j=0; j<nblt2; j++)
{
if(*(pt+i) == *(pt2+j))
{
tmp = *pt2;
*pt2 = *(pt2+j);
*(pt2+j) = tmp;


for(k=i; k<26; k++)
{
*(pt+k) = *(pt+k+1);
*(pt2) = *(pt2+k);
}
i--;
nblt1--;
}
}
}
}

3 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
8 déc. 2005 à 12:20
tu sauvegarde le mot au début, et tu le retournes à la fin, car l'adresse de base de la chaine n'est pas modifiée
0
mitchipecket Messages postés 4 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 décembre 2005
8 déc. 2005 à 14:24
Est ce que tu saurais m'expliquez un peu plus parce que la je comprend pas bien.
Merci
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
8 déc. 2005 à 15:56
STRSUP retourne un char*, pas un char.
La chaine ne change pas de place en mémoire, donc tu retournes pt. C'est seulement la mémoire pointée par pt qui va être modifiée
0
Rejoignez-nous