Les Allergies
Alimentaires
Posez votre question Signaler

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

informaticienne - Dernière réponse le 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.
Lire la suite 

[c]tableau de chaine de caractère »

19 réponses
Réponse
+1
moins plus
avec qu'elle langage?
Ajouter un commentaire
Réponse
+0
moins plus
langage c
Ajouter un commentaire
Réponse
+0
moins plus
tu peut faire deux structur de tableau l'un contien une seule chaine et l'autre plusier chaine.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
merci fiddy , mais je veux que ce soit tapé par l'utilisateur.
en gros je voudrais la fonction saisie dans les deux exemples.
cdlt
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
ton programme ne compile pas.
lami20j- 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?
Ajouter un commentaire
Réponse
+0
moins plus
oui sous windows xp
Ajouter un commentaire
Réponse
+0
moins plus
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;
}

Ajouter un commentaire
Réponse
+0
moins plus
voilà ce qui ne passe pas:
s[i] = malloc(strlen(mot));
Ajouter un commentaire
Réponse
+0
moins plus
teste ca:


s[i] =(char*) malloc(strlen(mot));
Ajouter un commentaire
Réponse
+0
moins plus
ca passe merci :)
<stdlib> c'est par rapport à quoi?
merci
lami20j- 29 déc. 2008 à 23:42
Re,

C'est pour malloc et free
Ajouter un commentaire
Réponse
+0
moins plus
merci beaucoup pour ton aide.
Ajouter un commentaire
Réponse
+0
moins plus
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
lami20j- 30 déc. 2008 à 19:20
Salut,

Tu as raison ;-)
Ajouter un commentaire
Ce document intitulé « [c]tableau de chaine de caractère » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?