[c]tableau de chaine de caractère

Résolu
informaticienne -  
fiddy Messages postés 441 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.
Configuration: Windows XP
Internet Explorer 6.0

16 réponses

  1. sadektlili Messages postés 165 Statut Membre 4
     
    avec qu'elle langage?
    1
  2. sadektlili Messages postés 165 Statut Membre 4
     
    tu peut faire deux structur de tableau l'un contien une seule chaine et l'autre plusier chaine.
    0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. 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
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  7. informaticienne
     
    ton programme ne compile pas.
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Re,

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

      Tu es sous windows?
      0
  8. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  9. informaticienne
     
    voilà ce qui ne passe pas:
    s[i] = malloc(strlen(mot));
    0
  10. sadektlili Messages postés 165 Statut Membre 4
     
    teste ca:

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

      C'est pour malloc et free
      0
  12. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      Tu as raison ;-)
      0
  13. tassou12 Messages postés 5 Statut Membre
     
    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
  14. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    @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