[c]tableau de chaine de caractère

Résolu
informaticienne -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
quelqu'un porrait m'aider à remplir un tableau de chaine de caractère?

en premier:un tableau contenant une seule chaine
esemple:abricot

en deux:plusieurs chaines de caractèes.
exemple:
abricot
poire
pomme
fraises


merci, j'ai vraiment besoin de votre aide.
A voir également:

16 réponses

sadektlili Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   4
 
avec qu'elle langage?
1
informaticienne
 
langage c
0
sadektlili Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   4
 
tu peut faire deux structur de tableau l'un contien une seule chaine et l'autre plusier chaine.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,

Le plus simple est de faire un tableau de chaînes de caractères comme tu l'as di bien dit :
int *tab[]={"abricot","pomme","poire"};

Cdlt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
informaticienne
 
merci fiddy , mais je veux que ce soit tapé par l'utilisateur.
en gros je voudrais la fonction saisie dans les deux exemples.
cdlt
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Voici un exemple
lami20j@debian:~/trash$ cat ccm25_tableauchaines.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
        char **s;
        char mot[50];
        int n,i;
        printf("Entrez le nombre d'éléments : ");
        scanf("%d",&n);
        s = (char **) malloc(n * sizeof(char *));
        for(i=0;i<n;++i){
                printf("Saisissez un mot : ");
                scanf("%s",mot);
                s[i] = malloc(strlen(mot));
                strcpy(s[i],mot);
        }
        for(i=0;i<n;++i)
                printf("%s\n",s[i]);
        for(i=0;i<n;++i)
                free(s[i]);
        free(s);
        return 0;
}
lami20j@debian:~/trash$ gcc ccm25_tableauchaines.c
lami20j@debian:~/trash$ ./a.out
Entrez le nombre d'éléments : 4
Saisissez un mot : abricot
Saisissez un mot : poire
Saisissez un mot : pomme
Saisissez un mot : fraises
abricot
poire
pomme
fraises
0
informaticienne
 
ton programme ne compile pas.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

Dans mon exemple on voit bien qu'il est compilé et qu'il est exécuté.

Tu es sous windows?
0
informaticienne
 
oui sous windows xp
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

En fait il se compile mais tu ne vois rien à l'écran quand tu essaies de l'exécuter.
C'est ça?

Alors essaie celui-là
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
        char **s;
        char mot[50];
        int n,i;
        printf("Entrez le nombre d'éléments : ");
        scanf("%d",&n);
        s = (char **) malloc(n * sizeof(char *));
        for(i=0;i<n;++i){
                printf("Saisissez un mot : ");
                scanf("%s",mot);
                s[i] = malloc(strlen(mot));
                strcpy(s[i],mot);
        }
        getchar();
        for(i=0;i<n;++i)
                printf("%s\n",s[i]);
        for(i=0;i<n;++i)
                free(s[i]);
        free(s);
        puts("Appuyez sur une touche pour quitter ...");
        getchar();
        return 0;
}

0
informaticienne
 
voilà ce qui ne passe pas:
s[i] = malloc(strlen(mot));
0
sadektlili Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   4
 
teste ca:


s[i] =(char*) malloc(strlen(mot));
0
informaticienne
 
ca passe merci :)
<stdlib> c'est par rapport à quoi?
merci
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

C'est pour malloc et free
0
informaticienne
 
merci beaucoup pour ton aide.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
Je sais pas la solution que tu as adoptée, mais si tu fais un malloc et que tu utilises strlen, il ne faut pas oublier "+1" pour le '\0'.

s[i] =malloc(strlen(mot)+1);

Cdlt
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Tu as raison ;-)
0
tassou12 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
svp dit moi comment en peut faire déclaré et affiché et faire la lecture d'un tableau de chaine de caractère avec pointeur et sans pointeur en langage c et merci sv p rep moi maintenant car c'est urgent
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
@tassou12,
Ca aurait été mieux, je pense, d'ouvrir un autre post.
De plus, lami20j a fait un code répondant à tes questions. Il suffit juste de s'armer de lire les réponses ci-dessous ;-))).
0