[c]tableau de chaine de caractère [Résolu/Fermé]

Signaler
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
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.

16 réponses

Messages postés
139
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
3 avril 2010
4
avec qu'elle langage?
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci


langage c
Messages postés
139
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
3 avril 2010
4
tu peut faire deux structur de tableau l'un contien une seule chaine et l'autre plusier chaine.
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 766
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

merci fiddy , mais je veux que ce soit tapé par l'utilisateur.
en gros je voudrais la fonction saisie dans les deux exemples.
cdlt
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 542
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

ton programme ne compile pas.
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 542
Re,

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

Tu es sous windows?

oui sous windows xp
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 542
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;
}


voilà ce qui ne passe pas:
s[i] = malloc(strlen(mot));
Messages postés
139
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
3 avril 2010
4
teste ca:


s[i] =(char*) malloc(strlen(mot));

ca passe merci :)
<stdlib> c'est par rapport à quoi?
merci
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 542
Re,

C'est pour malloc et free

merci beaucoup pour ton aide.
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 766
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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 542
Salut,

Tu as raison ;-)
Messages postés
4
Date d'inscription
dimanche 10 avril 2011
Statut
Membre
Dernière intervention
28 décembre 2011

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
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 766
@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 ;-))).