IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Probleme avec les '[ ]' et les '*' dans une structure


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut Probleme avec les '[ ]' et les '*' dans une structure
    Bonjour et bon Samedi a tous

    Pourquoi ce code ne fonctionne pas lorsque je mets des '[]' dans les tableaux de ma structure ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct
    {
    char nom[100];
    char prenom[100];
    char adresse[1000];
    char sexe[50];
     
    long age;
     
    }Personne ;
     
    int main()
    {
        long i;
        Personne joueur[2];
     
        joueur[0].nom = "Dupont";
        joueur[0].prenom = "Paul";
        joueur[0].age = 17;
        joueur[0].adresse = "23 rue du parc a Paris";
        joueur[0].sexe = "garcon";
     
        joueur[1].nom = "Alibaba";
        joueur[1].prenom = "Stephanie";
        joueur[1].age = 19;
        joueur[1].adresse = "54 avenue des fleurs a Paris";
        joueur[1].sexe = "fille";
     
        for (i = 0; i < 2; i++)
     
            printf("Joueur 1 : Vous vous appellez %s %s, vous avez %ldans, vous habitez %s et vous etes un(e) %s, bon match!\n", joueur[i].nom, joueur[i].prenom, joueur[i].age, joueur[i].adresse, joueur[i].sexe);
     
     return 0;
    }
    Et lorsque je mets des '*' dans les tableaux de ma structure ça fonction nikel ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    typedef struct
    {
    char *nom;
    char *prenom;
    char *adresse;
    char *sexe;
     
    long age;
     
    }Personne ;

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Parce qu'on n'utilise pas = pour copier des chaînes mais strcpy. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    typedef struct
    {
        char nom[100];
        char prenom[100];
        char adresse[1000];
        char sexe[50];
     
        long age;
    } Personne ;
     
    ...
     
    strcpy(joueur[0].nom, "Dupont");
    Dans le deuxième exemple, tu utilise des pointeurs à la place des tableaux, c'est pour cela que tu pouvais utiliser =, mais cela ne copie pas la chaîne. Cela stocke juste l'adresse de la chaîne dans le pointeur.

  3. #3
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonjour.

    Pour le second exemple, il est conseillé dans ce cas de mettre const char* plutôt que char* tout court car la modification d'une chaîne comme celles du second exemple est jugé comme comportement indéterminé (cf : ce tutoriel qui te sera peut être utile) ...

    Sinon, il est également plus rigoureux de mettre void entre parenthèses lorsqu'une fonction ne prend pas de paramètres (c'est le cas de main() ici).

    Et attention à l'indentation

    Cordialement,
    Idriss

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Merci a vous..

    Je croyais que les tableaux étaient des pointeurs sur le 1er élément..

    De plus, dans un autre poste on m'a dit que char nom[] est identique a char* nom et char *nom

  5. #5
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Je croyais que les tableaux étaient des pointeurs sur le 1er élément..
    Un tableau n'est pas un pointeur mais le compilateur le convertit parfois automatiquement en un pointeur vers le premier élément. Si on te dit le contraire ailleurs, c'est la personne qui te contre qui a tort. Tu trouveras des explication dans ce tutoriel entre autres.

    De plus, dans un autre poste on m'a dit que char nom[] est identique a char* nom et char *nom
    Mon pauvre, t'as été victime d'un très gros mensonge ...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Merci a vous..mais il me reste quelques questions..

    1/ si j'ai bien compris char nom[] est identique a char* nom et char *nom que dans les prototypes de fonction et non lors des déclarations.. ?

    2/ Pour ma question initiale, dans ce code, quand je réponds 'Dupont' a la question Quel est votre nom ? c'est comme si je fais utilisateur.nom = "Dupont" alors que nom est un tableau (char nom[100]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    struct Personne
    {
        char nom[100];
        char prenom[100];
        char adresse[1000];
     
        int age;
        int garcon; // Booléen : 1 = garçon, 0 = fille
    };
     
    int main(int argc, char *argv[])
    {
        Personne utilisateur;
     
        printf("Quel est votre nom ? ");
        scanf("%s", utilisateur.nom);
        printf("Votre prenom ? ");
        scanf("%s", utilisateur.prenom);
     
        printf("Vous vous appelez %s %s", utilisateur.prenom, utilisateur.nom);
     
        return 0;
    }
    3/ Pourquoi ce code fonctionne pas ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char nom[100];
    nom = "Dupond" /* ne marche pas */;

    Et celui oui sans utiliser de pointeur ni strcpy??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char nom[100] = "Dupond" /* marche  */;

  7. #7
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Re

    Tu devrais jeter un coup d'oeil aux tutos que l'on t'a indiqué ... tu y trouvera des explications.

    Citation Envoyé par lassault1 Voir le message
    2/ Pour ma question initiale, dans ce code, quand je réponds 'Dupont' a la question Quel est votre nom ? c'est comme si je fais utilisateur.nom = "Dupont" alors que nom est un tableau (char nom[100]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    struct Personne
    {
        char nom[100];
        char prenom[100];
        char adresse[1000];
     
        int age;
        int garcon; // Booléen : 1 = garçon, 0 = fille
    };
     
    int main(int argc, char *argv[])
    {
        Personne utilisateur;
     
        printf("Quel est votre nom ? ");
        scanf("%s", utilisateur.nom);
        printf("Votre prenom ? ");
        scanf("%s", utilisateur.prenom);
     
        printf("Vous vous appelez %s %s", utilisateur.prenom, utilisateur.nom);
     
        return 0;
    }
    Ici, tu utilise la fonction scanf qui fait une saisie de chaîne avec le format %s ce qui est autorisé. Par contre l'affectation via l'opérateur '=' d'une chaîne ne l'est pas (je parle bien d'affectation et non d'initialisation). Dans certains autres langages (Java par exemple mais bien d'autres), il est possible d'utiliser l'opérateur '=' mais ce n'est pas le cas en C ... il faut donc faire avec.

    Sinon, les paramètres de ta fonction main () sont inutile. Il est plus rigoureux dans ce cas, de mettre void à la place de ces paramètres => int main (void).

    Citation Envoyé par lassault1 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char nom[100];
    nom = "Dupond" /* ne marche pas */;
    [...]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char nom[100] = "Dupond" /* marche  */;
    Dans le premier code, tu déclare un tableau de char ... tu ne peut donc pas le manipuler autrement qu'en passant par ses cases ou en utilisant les fonctions de string.h telle que strcpy () ...

    Dans le second, le compilateur interprète cela comme une initialisation des premières cases de ton tableau de char ... et non une affectation.

    Ici le compilateur calcul et alloue au tableau de char, la taille de la chaîne "Dupond" et initialise ce tableau avec les carractères composant cette chaîne (avec '\0' comme dernier caractère) ...

    Cordialement,
    Idriss

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Merci idriss..

    Je comprends pas pourquoi "Dupond" est une adresse... car pour moi un pointeur se déclare ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int *pointeurSurAge; 
    pointeurSurAge = &age;
    Et dans ce code nom est une adresse donc nom est la même chose que &nom[0] !!! mais vous dites qu'il est faux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char nom[100];
    nom = "Dupond"

  9. #9
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    "Dupond" n'est pas une adresse, mais un tableau contenant les caractères 'D', 'u', 'p', 'o', 'n', 'd' et '\0'. Encore une fois, un tableau peut cependant être automatiquement converti en l'adresse de son premier élément.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char nom[100];
    nom = "Dupond";
    Cela ne marche pas parce que nom est un tableau et non un pointeur. Pour écrire dans un tableau, il faut écrire un à un les éléments, il n'y a pas d'autre méthode. = ne peut pas se trouver à droite d'un tableau, point. Si nom était un pointeur, ça aurait passé.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Merci Melem..

    Donc si j'ai bien compris on peut pas initialiser un tableau par une chaine qu'au moment de sa déclaration..
    Quand je fais:
    joueur[0].nom = "Dupont";
    C'est trop tard, car le tableau joueur[0].nom a déjà été initialisé lors de la déclaration
    Personne joueur[2].

    C'est ça?

  11. #11
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Je suis heureux car tu as tout compris.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Merci..

    Mais hélas il reste encore un truc pas clair dans ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char nom[100];
    nom = "Dupond"

    nom est une adresse (donc une constante !!!)
    Ce code est un raccourci syntaxique qui initialise le tableau, mais "nom" reste toujours une adresse (nom == &nom[0]), alors pourquoi il peut pas stocké "Dupond" en mémoire comme un pointeur encore une fois parce que nom est une adresse &nom[0] ?

  13. #13
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Et moi qui croyais que t'avais compris, c'est pas grave.
    nom est une adresse (donc une constante !!!)
    Mais non, nom est un tableau. Un tableau de 100 char.
    Ce code est un raccourci syntaxique qui initialise le tableau
    Non, le raccourci syntaxique est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char nom[100] = "Dupond";
    mais "nom" reste toujours une adresse (nom == &nom[0])
    nom n'est pas &nom[0], mais est dans certains cas automatiquement converti en &nom[0]. Et ces certains cas sont discutés dans le tutoriel que je t'ai indiqué. Pour t'en convaincre, affiche sizeof(nom) et sizeof(&nom[0]) et tu verras que ce sont à priori deux choses qui n'ont rien à voir. Les réponses aux questions que tu pourras te poser après sont, encore une fois, déjà dans le tutoriel.
    alors pourquoi il peut pas stocké "Dupond" en mémoire comme un pointeur
    D'abord, on ne stocke pas une adresse (&nom[0] par exemple est une adresse) dans une adresse, mais dans un pointeur. Preuve simple : tu ne peux par exemple pas écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char c; /* c est un char, &c est donc une adresse */
    &c = "Dupond";
    Tu veux changer l'adresse de c ? Tu comprends maintenant ? Il y a la notion de lvalue et de rvalue que tu dois aussi comprendre, j'espère que tu sais où regarder .

    Ensuite, un pointeur ne stocke pas non plus une chaîne, une chaîne ne peut être stockée que dans un tableau. Un pointeur permet juste de mémoriser l'adresse du premier caractère de la chaîne, c'est-à-dire, numériquement, l'adresse de la chaîne.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Je sais que "non" n'est pas un pointeur mais je comprends pas pourquoi tu dis que "nom" est pas l' adresse du 1er élément du tableau..

  15. #15
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Citation Envoyé par lassault1 Voir le message
    Je sais que "non" n'est pas un pointeur mais je comprends pas pourquoi tu dis que "nom" est pas l' adresse du 1er élément du tableau..
    nom est le tableau, ce n'est pas l'adresse du première élément :

    Citation Envoyé par Melem
    nom n'est pas &nom[0], mais est dans certains cas automatiquement converti en &nom[0]. Et ces certains cas sont discutés dans le tutoriel que je t'ai indiqué. Pour t'en convaincre, affiche sizeof(nom) et sizeof(&nom[0]) et tu verras que ce sont à priori deux choses qui n'ont rien à voir. Les réponses aux questions que tu pourras te poser après sont, encore une fois, déjà dans le tutoriel
    Ce code suivant, qui est faux, cherche à affecter dans un tableau, une chaîne => ce qui est impossible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char nom[100];
    nom = "Dupond";
    Il ne faut pas oublier que nom est un tableau de 100 char ... Même si certaines fonctions permettent de le manipuler autrement qu'en passant par ses cases (comme strcpy () par exemple), ce n'est pas pour autant que nom n'est pas un tableau de char et qu'on l'on affecte pas une valeur à un tableau mais des valeurs aux cases d'un tableau (c'est ce que fait aussi strcpy() au final).

    Ce code suivant, n'est pas équivalent au code précèdent ... il s'agit ici du raccourcis permettant d'initialiser le tableau de char.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char nom[100] = "Dupond";
    Il équivaut à écrire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char nom[100];
    nom[0] = 'D';
    nom[1] = 'u';
    nom[2] = 'p';
    nom[3] = 'o';
    nom[4] = 'n';
    nom[5] = 'd';
    nom[6] = '\0';
    Cordialement,
    Idriss

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Edit: double poste

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Et pourquoi quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int tableau[4];
     
    printf("%d", tableau);
    J'ai ce résultat qui est l'adresse du 1er élément du tableau


  18. #18
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par Melem Voir le message
    "Dupond" n'est pas une adresse, mais un tableau contenant les caractères 'D', 'u', 'p', 'o', 'n', 'd' et '\0'. Encore une fois, un tableau peut cependant être automatiquement converti en l'adresse de son premier élément.
    Citation Envoyé par Melem Voir le message
    Tu trouveras des explication dans ce tutoriel entre autres.
    Il y a aussi la FAQ : Soit t un tableau. Quelle est la différence entre t, &t et &(t[0]) ?

  19. #19
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Je pense que c'est un des cas ou tu as une conversion implicite du tableau en pointeur vers le premier élément du tableau. (Et il faut plutôt utiliser le format %p que %d dans ce cas). Ceci étant, cette conversion à lieu pour la fonction printf mais le tableau reste un tableau d'entier tout au long de ce programme.

    La preuve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    idriss@precario-c700:~$ more essai.c
    # include <stdio.h>
    int main (void)
    {
        int tableau[4];
        printf ("%d %d\n", sizeof(tableau), sizeof(int*));
        printf("%p\n", tableau);
        printf ("%d %d\n", sizeof(tableau), sizeof(int*));
        return 0;
    }
    idriss@precario-c700:~$ gcc essai.c -Wall -Wextra
    idriss@precario-c700:~$ ./a.out
    16 4
    0xbfdc0140
    16 4
    idriss@precario-c700:~$
    Cordialement,
    Idriss

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/07/2014, 13h06
  2. problem de chaine de caractere dans une structure
    Par lenetfm dans le forum Débuter
    Réponses: 11
    Dernier message: 18/04/2008, 08h25
  3. [PostgreSQL] [PostGreSQL] Trouver les ' et les remplacer par \' dans une chaine
    Par bossLINDROS dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/05/2007, 10h31
  4. Problème avec des caractères spéciaux dans une chaine
    Par thibaut06 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 20/11/2006, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo