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 :

besoin d'un coup de pouce pour strcmp


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut besoin d'un coup de pouce pour strcmp
    bonjour et bonne année a tous ;°)

    comme le titre l'indique: je bloque! mais je +- débute donc je pense qu'il s'agit sûrement d'un problème grossier qui m'échappe.

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      char * mot = "";
      FILE * f;
     
      f = fopen("test","r");
      fscanf(f,"%s",&mot);
      fclose(f);
     
      if  (!strcmp(mot,"bonjour")) ... //me renvoie une erreur de segmentation.
    voilà! je vous assure que j'ai écopé les man pages sans trouver de réponse.
    je ne sais vraiment pas ou je me plante.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 20
    Points
    20
    Par défaut
    ton init de "mot" est faite sur une chaine constante. Pour que ton code fonctionne il te faut plutot faire un malloc.
    Ensuite ton fscanf n'a pas besoin d'une reference sur mot:
    et sa fonctionnera mieux.

    Stef

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par echantillon
    bonjour et bonne année a tous ;°)

    comme le titre l'indique: je bloque! mais je +- débute donc je pense qu'il s'agit sûrement d'un problème grossier qui m'échappe.

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      char * mot = "";
      FILE * f;
     
      f = fopen("test","r");
      fscanf(f,"%s",&mot);
      fclose(f);
     
      if  (!strcmp(mot,"bonjour")) ... //me renvoie une erreur de segmentation.
    voilà! je vous assure que j'ai écopé les man pages sans trouver de réponse.
    je ne sais vraiment pas ou je me plante.
    mot est un pointeur vers une chaine constante.

    Tu commets donc 3 infractions entrainant un comportement indéfini :
    • Tu passes l'adresse d'un pointeur sur char alors que fscanf() avec "%s" attend l'adresse d'un char
    • Même si tu retires le '&'
      • Tu passes l'adresse du premier élément d'un tableau de char non modifiable (on ne peut donc pas écrire dedans)
      • Même si il était modifiable, ce tableau ayant une talle de 1, il ne peut recevoir autre chose qu'une chaine vide ("").

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Salut,

    Je pense que je ferais comme cela:
    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
    38
    39
    40
    41
    42
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void)
    {
        int i; /* indice de boucle */
        char s_mot[50];
        FILE *f;
     
        f = fopen("test", "r");
        /* On contrôle toujours la valeur de retour de fopen*/
        if (f == NULL)
        {
            fprintf(stderr, "Impossible d'ouvrir le fichier test!\n");
            exit(EXIT_FAILURE); 
        }
     
        /* fgets est la fonction de choix pour la saisie de chaînes de caractères*/
        fgets(s_mot, sizeof s_mot, f);
        fclose(f);
     
        for (i = 0; s_mot[i] != '\n' && s_mot[i] != '\0'; ++i)
        {
            continue; /* Le corps de la boucle est vide*/
        }
        if (s_mot[i] == '\0')
        {
            /* La saisie est incomplête: sizeof s_mot est insuffisant */
        }
     
        if  (!strcmp(s_mot, "bonjour"))
        {
            /* si s_mot contient la chaîne "bonjour" */
        }
        else
        {
            /* ... */
        }
     
        return EXIT_SUCCESS;
    }
    La fonction fscanf (et scanf) est une fonction exclusivement réservée aux experts, car très difficile à manipuler correctement. Pour une utilisation correcte de scanf et en particulier avec la saisie de chaîne de caractère, la lecture de ce tutoriel est fortement recommandée: http://xrenault.developpez.com/tutoriels/c/scanf/

    Thierry

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut
    Merci pour les réponse ;°)
    alors:

    =>Emmanuel :
    "Tu commets donc 3 infractions entrainant un comportement indéfini :"

    -..heu, me reste t' il des points sur mon permis de programmer !?


    "Même si il était modifiable, ce tableau ayant une talle de 1, il ne peut recevoir autre chose qu'une chaine vide ("") "

    -Ducoup, je ne devrais pas avoir le droit de faire ceci :
    char * p = "";
    p = "bonjour";
    ?
    pourtant gcc ne me dit rien et ça fonctionne .

    Sinon merci pour la clarté de ta réponse. je pense avoir définitivement compris mes erreurs précédentes.

    =>mujigka :
    Etant donné le nombre important de mots (une 100aine) dont je dois tester la présence dans mon fichier (je peux éventuellement vous donner des précisions sur mon prog) je crois que je vais quand même utiliser fscanf; tout en faisant très attention.

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par echantillon
    "Même si il était modifiable, ce tableau ayant une talle de 1, il ne peut recevoir autre chose qu'une chaine vide ("") "

    -Ducoup, je ne devrais pas avoir le droit de faire ceci :
    char * p = "";
    p = "bonjour";
    ?
    pourtant gcc ne me dit rien et ça fonctionne .
    Ben oui, pourquoi on ne pourrait pas faire ça ? On peut faire pointer un pointeur n'importe où, du moment que le type est compatible et que la zone est valide...

    Tu confonds peut être avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       char * p = "";
       strcpy (p, "bonjour");
    Ce qui est un comportement indéfini.

    Rappel : http://emmanuel-delahaye.developpez.com/notes.htm#ub

    Remarque. La zone pointée par p éant non modifiable, il est recommandé d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       char const * p = "";
       strcpy (p, "bonjour");
    Là, un compilateur bien réglé devrait signaler le problème de types incompatibles, ce qui pourrait éviter une erreur...

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut
    "Ben oui, pourquoi on ne pourrait pas faire ça ?"
    overdose de théine. désolé.

    La vrai raison c'est qu'il faut que je revoie les pointeur en c.
    Feu mon roulage de bosse en pointeurs pascalien dont je suit originaire (ha.. les belles années légos..) mais le c est plus coriace, j' eu été prévenu.

    Sinon voici la correction de mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char * mot = ""; mot = (char*)malloc(sizeof(char)*50);
      FILE * f;
     
      f = fopen("test","r");
      fscanf(f,"%s",mot);
      fclose(f);
     
      if  (!strcmp(mot,"bonjour")) system("echo bonjour");
    cette fois je pense que c'est bon.
    merci pour tout ;°)
    et rebonne année a vous tous;°))

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par echantillon
    Sinon voici la correction de mon code:
    Beaucoup de choses inutilement compliquées. Beaucoup de choses essentielles oubliées...
    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
    38
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main (void)
    {
       char const *fname = "test.txt";
       char *mot = malloc (sizeof *mot * 50);
     
       if (mot != NULL)
       {
          int err = 1;
          FILE *f = fopen (fname, "r");
     
          strcpy (mot, "");
     
          if (f != NULL)
          {
             err = fscanf (f, "%s", mot) != 1;
             fclose (f), f = NULL;
          }
          else
          {
             perror (fname);
          }
     
          if (!err)
          {
             if (strcmp (mot, "bonjour") == 0)
             {
                system ("echo bonjour");
             }
          }
          free (mot), mot = NULL;
       }
       return 0;
    }
    Pose des questions si tu ne comprends pas.

  9. #9
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Pourquoi une allocation dynamique pour un taille fixe ?

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Skyrunner
    Pourquoi une allocation dynamique pour un taille fixe ?
    Peut être en vue d'une réallocation...

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut
    "Beaucoup de choses inutilement compliquées." là je ne vois pas.
    "Beaucoup de choses essentielles oubliées..." ça je comprend très bien quand je vois la rigueur de ton code.

    Mais est-ce vraiment nécessaire de prendre autant de précautions ? (je connais la réponse)
    Connais-tu beaucoup de monde qui soit aussi rigoureux dans les moindre détails? débutant compris, surtout ? Qu'en penses-tu !?

    Quand j'écope forums et tuto a la recherche d'exemple je ne vois jamais de code aussi parano/propre.

    ..enfin tu comprends mes craintes.
    Si je dois coder comme ça, je vais fournir une ligne toute les huit heures, tripler mon nombre d'erreurs et fournir un code que j'aurais du mal a relire.

    Mais je veux bien le faire. ..

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par echantillon
    "Beaucoup de choses inutilement compliquées." là je ne vois pas.
    de mémoire...
    • des définitions de variables initialisées ou non avec plus loin leur initialisaton véritable...
    • des casts inutiles
    • sizeof(char) vaut 1 par définition...

    "Beaucoup de choses essentielles oubliées..." ça je comprend très bien quand je vois la rigueur de ton code.
    Bof, c'est du code industriel normal. C'est pas long à coder quand on sait ce qu'on fait. Il faut de l'habitude ...
    Mais est-ce vraiment nécessaire de prendre autant de précautions ? (je connais la réponse)
    Ben oui, sinon je ne le ferais pas.
    Connais-tu beaucoup de monde qui soit aussi rigoureux dans les moindre détails? débutant compris, surtout ? Qu'en penses-tu !?
    Je pense que plus on apprend tôt à coder correctement tôt, meilleure sera la vie des informaticiens. J'ai passé des jours et des nuits (littérallement) à reprendre du code fait à l'arrache par des soi-disantes SSII :
    - Ca ne fonctionne pas
    - Ca fait perdre du temps à celui doit réellement sortir le produit et de l'argent à la boite.
    Quand j'écope forums et tuto a la recherche d'exemple je ne vois jamais de code aussi parano/propre.
    Tu ne dois pas aller dans les bons forums...
    ..enfin tu comprends mes craintes.
    Si je dois coder comme ça, je vais fournir une ligne toute les huit heures, tripler mon nombre d'erreurs et fournir un code que j'aurais du mal a relire.

    Mais je veux bien le faire. ..
    Un codeur confirmé produit 10 à 25 lignes de code validé par jour.

  13. #13
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par echantillon
    "Beaucoup de choses inutilement compliquées." là je ne vois pas.
    "Beaucoup de choses essentielles oubliées..." ça je comprend très bien quand je vois la rigueur de ton code.

    Mais est-ce vraiment nécessaire de prendre autant de précautions ? (je connais la réponse)
    Connais-tu beaucoup de monde qui soit aussi rigoureux dans les moindre détails? débutant compris, surtout ? Qu'en penses-tu !?

    Quand j'écope forums et tuto a la recherche d'exemple je ne vois jamais de code aussi parano/propre.

    ..enfin tu comprends mes craintes.
    Si je dois coder comme ça, je vais fournir une ligne toute les huit heures, tripler mon nombre d'erreurs et fournir un code que j'aurais du mal a relire.

    Mais je veux bien le faire. ..
    Il ne fait que vérifier que les appels aux fonctions susceptibles d'échouer.
    malloc échoue rarement mais il peut echouer.
    fopen peut aussi échouer (fichier non présent par exemple)

    Je pense savoir pourquoi tu trouves ce code compliqué, en fait Emmanuel respecte le : une seule sortie par fonction.

    De ce fait il multiplie les imbrications.

    Une autre facon de voir son code est la suivante.

    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
    38
    39
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main (void)
    {
        char const *fname = "test.txt";
        char *mot = malloc (sizeof *mot * 50);
        FILE *f = fopen (fname, "r");
     
     
        if (mot == NULL)
        {
            fprintf(stderr, "Malloc failure !\n");
            exit(EXIT_FAILURE);
        }
     
        if(f == NULL)
        {
            perror("file()");
            exit(EXIT_FAILURE);
        }
     
        strcpy (mot, "");
     
        if(fscanf (f, "%s", mot) == 1)
        {
            if (strcmp (mot, "bonjour") == 0)
            {
                system ("echo bonjour");
            }
        }
     
        fclose(f), f = NULL;
        free(mot), mot = NULL;
     
        return 0;
    }
    D'ailleurs ya un problème dans ton code Emmanuel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    err = fscanf (f, "%s", mot) != 1;
    Manque le if je crois.

  14. #14
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Skyrunner
    D'ailleurs ya un problème dans ton code Emmanuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    err = fscanf (f, "%s", mot) != 1;
    Manque le if je crois.
    Bah non, même en BASIC, c'est vrai. Une expression retourne 0 ou 1.

  15. #15
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Bah non, même en BASIC, c'est vrai. Une expression retourne 0 ou 1.
    Nop c'est bon j'ai rien dis. J'ai pas réfléchi. Du moins je voyais pas la chose comme ça.

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut
    bonjour ;

    En y réfléchissant il y a des choses que ne comprend pas:

    char const *fname = "test.txt";
    Pourquoi définis-tu une constante pour une utilisation si courte?
    Ou quel est l'amélioration par rapport aux lignes correspondantes de mon programme ?
    Un ami m'a demandé pourquoi tu n'utilisait pas #define ?

    char *mot = malloc (sizeof *mot * 50);
    Ne peut-on pas mettre malloc(50) pour allouer 50 octets/caractères a mot, tout en évitant les erreurs éventuelles renvoyées par malloc?

    strcpy (mot, "");
    Est-ce pour être sur que mot != NULL ?
    Ne peut-on pas écrire char *mot = malloc (sizeof *mot * 50) = ""; ?

    Je crois que c'est tout ;°)

    Pondre 3 ligne par jour ne me dérange absolument pas tant que j'ai l'impression de bien faire.
    C'est pour ça que tout ce que vous me dites, ce genre de conseils, là maintenant, je trouve ça hyper important. Je m' en délecte.
    Ca vaut 200 exemple.

  17. #17
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par echantillon
    char const *fname = "test.txt";
    Pourquoi définis-tu une constante pour une utilisation si courte?
    Parce que j'utilise le nom 2 fois. (fopen() et perror())
    Un ami m'a demandé pourquoi tu n'utilisait pas #define ?
    Pourquoi pas. Question de style.
    char *mot = malloc (sizeof *mot * 50);
    Ne peut-on pas mettre malloc(50) pour allouer 50 octets/caractères a mot, tout en évitant les erreurs éventuelles renvoyées par malloc?
    Si un jour tu passes en unicode avec des wchar_t, la maintenance est réduite au minimum avec mon code :
    wchar_t *mot = malloc (sizeof *mot * 50);
    Hop, terminé.

    strcpy (mot, "");
    Est-ce pour être sur que mot != NULL ?
    J'ai rien compris. Cette instruction permet de placer une chaine vide (un 0) dans le tableau. Je ne connais plus le contexte...
    Ne peut-on pas écrire char *mot = malloc (sizeof *mot * 50) = ""; ?
    C'est précisément ce qui a été fait, non ?

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut
    Bon, je crois que ça ira comme ça.

    Je vais me replonger dans mes lignes et reprendre tout ce qui me paraît nécessaire.

    Au moins je n'aurai pas qu'appris a utiliser fscanf.


    A bientôt



    !

Discussions similaires

  1. [Batch] Besoin d'un coup de pouce pour un .bat
    Par rlelamer dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 23/04/2011, 01h48
  2. j'ai besoin du petit coup de pouce pour démarrer
    Par metou2703 dans le forum C++
    Réponses: 12
    Dernier message: 21/11/2008, 15h15
  3. [MySQL] Besoin d'un coup de pouce pour mon update
    Par oranocha dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/10/2007, 12h54
  4. [Fortran 95] Besoin d'un coup de pouce pour démarrer
    Par R_sponge dans le forum Fortran
    Réponses: 3
    Dernier message: 26/09/2007, 22h47
  5. Besoin d'1 coup de pouce pour realiser une importation de BD
    Par gizmorambo dans le forum Bases de données
    Réponses: 4
    Dernier message: 25/08/2005, 15h07

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