[c]tableau de chaine de caractère

Résolu/Fermé
informaticienne - 29 déc. 2008 à 19:40
fiddy
Messages postés
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
- 10 avril 2011 à 17:31
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

sadektlili
Messages postés
139
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
3 avril 2010
4
29 déc. 2008 à 20:07
avec qu'elle langage?
1
informaticienne
29 déc. 2008 à 20:29
langage c
0
sadektlili
Messages postés
139
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
3 avril 2010
4
29 déc. 2008 à 20:36
tu peut faire deux structur de tableau l'un contien une seule chaine et l'autre plusier chaine.
0
fiddy
Messages postés
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 811
29 déc. 2008 à 20:39
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
29 déc. 2008 à 20:52
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
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
29 déc. 2008 à 22:42
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
29 déc. 2008 à 23:00
ton programme ne compile pas.
0
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
29 déc. 2008 à 23:01
Re,

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

Tu es sous windows?
0
informaticienne
29 déc. 2008 à 23:07
oui sous windows xp
0
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
29 déc. 2008 à 23:09
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
29 déc. 2008 à 23:32
voilà ce qui ne passe pas:
s[i] = malloc(strlen(mot));
0
sadektlili
Messages postés
139
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
3 avril 2010
4
29 déc. 2008 à 23:34
teste ca:


s[i] =(char*) malloc(strlen(mot));
0
informaticienne
29 déc. 2008 à 23:39
ca passe merci :)
<stdlib> c'est par rapport à quoi?
merci
0
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
29 déc. 2008 à 23:42
Re,

C'est pour malloc et free
0
informaticienne
29 déc. 2008 à 23:43
merci beaucoup pour ton aide.
0
fiddy
Messages postés
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 811
30 déc. 2008 à 15:55
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
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
30 déc. 2008 à 19:20
Salut,

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

10 avril 2011 à 17:25
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
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 811
10 avril 2011 à 17:31
@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