Ensemble de chaines de caractères dans un tableau de pointeurs

Fermé
safae - 24 nov. 2014 à 00:41
safaebazi Messages postés 1 Date d'inscription lundi 24 novembre 2014 Statut Membre Dernière intervention 24 novembre 2014 - 24 nov. 2014 à 01:27
Bonjour,
veuillez m'aidez svp pour résoudre ce problème là " Ecrire une fonction qui permet de saisir à partir du clavier un ensemble de chaines de caractères. L'ensemble se termine avec la chaine "fin" qui n'est pas incluse dans le tableau. Le tableau doit rester constamment trié en ordre croissant (ordre lexicographique) au cours de la saisie.
La mémoire nécessaire pour implanter chaque chaine doit être allouée au fur et à mesure de la lecture de celles-ci avec la fonction malloc.
La taille du tableau de pointeurs est fixe et est égal à 20.

Ecrire une fonction main() qui fait la saisie d'un tableau de chaines de caractères en appelant la fonction ci-dessus puis l'affiche à l'aide d'une deuxième fonction qu'on définit aussi." et merci

A voir également:

1 réponse

safaebazi Messages postés 1 Date d'inscription lundi 24 novembre 2014 Statut Membre Dernière intervention 24 novembre 2014
24 nov. 2014 à 01:27
je pense la répense est :
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void saisi(char *liste_mot[],int taille)
{ int n,i;
for (i=0;i<taille+1;i++)
{
printf("donner la taille de chaine %d\t",i+1);
scanf("%d",&n);
liste_mot[i]=(char *) malloc(n*sizeof(char));
printf("donner les chaines %d\t",i+1);
scanf("%s",liste_mot[i]);
}
}
void affiche(char *liste_mot[], char charon2[],int taille)
{
int i,j;
printf("l'ensemble de chaines est :\n");
for(i=0; i<taille; i++)
{
for(j=0; j<taille; j++)
{
if(strcmp(liste_mot[i],liste_mot[j])<0)
{
strcpy(charon2, liste_mot[i]);
strcpy(liste_mot[i], liste_mot[j]);
strcpy(liste_mot[j], charon2);
}
}
}
for(i=0; i<taille; i++)
{
printf("%s\n", liste_mot[i]);
}
}
int main() {
int taille=20 ;
char *charon2;
charon2=(char*)calloc(20,sizeof(char));
char *liste_mot[taille];
saisi(liste_mot, taille);
affiche(liste_mot,charon2,taille);
return 0;
}
0