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 :

[gcc] problème d'exécution très bizarre


Sujet :

C

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2005
    Messages : 98
    Points : 99
    Points
    99
    Par défaut [gcc] problème d'exécution très bizarre
    Bonjour,
    J'ai écrit cette fonction très simple qui me permet de concaténer deux tableaux en un troisième :
    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
    #include "concat.h"
     
    /* fonction qui met bout à bout tab2 avec tab1 */
    unsigned int* concat(unsigned int* tab1, unsigned int* tab2)
    {
    	unsigned int* tab3;
    	unsigned int k, l1, l2;
     
    	l1 = longueur(tab1,0,900);
    	l2 = longueur(tab2,0,900);
     
    	tab3 = malloc((l1+l2)*sizeof(unsigned int));
     
    	for (k=0;k<l1;k++)
    	{
    		tab3[k] = tab1[k];
    	}
    	for (k=l1;k<l1+l2;k++)
    	{
    		tab3[k] = tab2[k-l1];
    	}
    return tab3;
    }
     
    /* fonction longueur : calcule le nombre de cases mémoires effectivement utilisées dans un tableau de taille taille_max (taille maximale que peut prendre ce tableau).
    => permet de calculer la longueur d'un vecteur. k doit être mis à 0 pour que le calcul soit correct. */	
    unsigned int longueur(unsigned int* vecteur, unsigned int k, unsigned int taille_max)
    {
    	if (k != taille_max && vecteur[k] != 0)
      	{
       		k = longueur(vecteur, k + 1, taille_max);
    	}
       	return k;
    }
    J'essaie de la tester grâce au main suivant :
    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
    43
    /* test de concat */
     
    #include <stdio.h>
    #include "concat.h"
     
    int main()
    {
    	unsigned int l1,l2,k,p;
    	unsigned int* tab1;
    	unsigned int* tab2;
    	unsigned int* tab3;
     
    	printf("longueur du premier tableau : \n");
    	scanf("%u",&l1);
    	tab1 = malloc(l1*sizeof(unsigned int));
    	for (k=0;k<l1;k++)
    	{
    		printf("entrez la valeur n %u \n",k);
    		scanf("%u",&tab1[k]);
    	}
     
    	printf("longueur du deuxieme tableau : \n");
    	scanf("%u",&l2);
    	tab2 = malloc(l2*sizeof(unsigned int));
    	for (k=0;k<l2;k++)
    	{
    		printf("entrez la valeur n %u \n",k);
    		scanf("%u",&tab2[k]);
    	}
     
    	tab3 = concat(tab1,tab2);
     
    	for (k=0;k<l1+l2;k++)
    	{
    		p = tab3[k];
    		printf("valeur n %u de tab3 : %u \n",k,p);
    	}
     
    	free(tab1);
    	free(tab2);
    	free(tab3);
    	return 0;
    }
    La compilation avec gcc 4.1.1 suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gcc -Wall -ansi -pedantic -W -c concat.c
    gcc -Wall -ansi -pedantic -W -c test_concat.c
    gcc concat.o test_concat.o -o test_concat.out
    donne comme warnings :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    concat.c: In function ‘concat’:
    concat.c:12: attention : implicit declaration of function ‘malloc’
    concat.c:12: attention : incompatible implicit declaration of built-in function ‘malloc’
    test_concat.c: In function ‘main’:
    test_concat.c:15: attention : implicit declaration of function ‘malloc’
    test_concat.c:15: attention : incompatible implicit declaration of built-in function ‘malloc’
    test_concat.c:39: attention : implicit declaration of function ‘free’
    A l'exécution, mon programme donne parfois les résultats attendus, et parfois pas, sans que j'arrive à saisir la logique du bug.
    Par exemple, il m'affiche le bon vecteur tab3 pour tab1 = {1} et tab2 = {2,3}, par contre pour tab1={1,2,3,4,5} et tab2 = {1,2,3}, il me donne tab3 = {1,2,3,4,5,17,1,2}.
    J'ai constaté qu'à chaque fois que la sortie n'était pas celle attendue, les valeurs issues de tab1 étaient correctes, par contre il était inséré un nombre dont j'ignore la provenance à la suite de celle-ci dans tab3, puis venaient les valeurs de tab2 dans l'ordre.
    Quelqu'un pourrait-il m'aider à résoudre ce problème s'il vous plaît?

    Merci beaucoup d'avance

    Agnès

    PS : les tests sur la fonction "longueur" étaient bons, donc je suppose qu'elle est correctement écrite.

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Voici les remarques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    /* fonction qui met bout à bout tab2 avec tab1 */
    unsigned int* concat(unsigned int* tab1, unsigned int* tab2)
    {
    	unsigned int* tab3;
    	unsigned int k, l1, l2;
     
            l1 = longueur(tab1,0,900);
    	l2 = longueur(tab2,0,900);
    Erreur de conception, on passe la taille du tableau en paramètre, c'est dangereux, non scalable et source d'une erreur dans ton code d'utiliser ta fonction longueur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	tab3 = malloc((l1+l2)*sizeof(unsigned int));
    Où est le test pour voir si malloc a échoué?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    unsigned int longueur(unsigned int* vecteur, unsigned int k, unsigned int taille_max)
    {
    	if (k != taille_max && vecteur[k] != 0)
      	{
       		k = longueur(vecteur, k + 1, taille_max);
    	}
       	return k;
    }
    Une récursive... Un for serait nettement mieux... Et si k est > à taille_max, c'est une récursive qui ne s'arrête jamais!

    De plus, ta condition d'arrêt est lorsque vecteur[k] est égal à 0. Et si tu as un 0 dans ton tableau??


    On n'utilise pas scanf mais fgets et strtol.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	tab1 = malloc(l1*sizeof(unsigned int));
    Le test de retour du malloc?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	for (k=0;k<l1;k++)
    	{
    		printf("entrez la valeur n %u \n",k);
    		scanf("%u",&tab1[k]);
    	}
    Sympa, donc lorsque tu calcules la longueur du tableau, tu supposes que l'ordinateur est assez gentil pour mettre un 0 derrière??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	printf("longueur du deuxieme tableau : \n");
    	scanf("%u",&l2);
    	tab2 = malloc(l2*sizeof(unsigned int));
    	for (k=0;k<l2;k++)
    	{
    		printf("entrez la valeur n %u \n",k);
    		scanf("%u",&tab2[k]);
    	}
    Mêmes remarques


    La compilation avec gcc 4.1.1 [...] donne comme warnings :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    concat.c: In function ‘concat’:
    concat.c:12: attention : implicit declaration of function ‘malloc’
    concat.c:12: attention : incompatible implicit declaration of built-in function ‘malloc’
    test_concat.c: In function ‘main’:
    test_concat.c:15: attention : implicit declaration of function ‘malloc’
    test_concat.c:15: attention : incompatible implicit declaration of built-in function ‘malloc’
    test_concat.c:39: attention : implicit declaration of function ‘free’
    A ne pas ignorer!!! Regarder dans les pages man (http://man.developpez.com/) pour savoir quels fichiers utilisés!

    A l'exécution, mon programme donne parfois les résultats attendus, et parfois pas, sans que j'arrive à saisir la logique du bug.
    Par exemple, il m'affiche le bon vecteur tab3 pour tab1 = {1} et tab2 = {2,3}, par contre pour tab1={1,2,3,4,5} et tab2 = {1,2,3}, il me donne tab3 = {1,2,3,4,5,17,1,2}.
    Logique vu les erreurs...

    PS : les tests sur la fonction "longueur" étaient bons, donc je suppose qu'elle est correctement écrite.
    Dangereux comme raisonnement (la preuve ici), un programme n'est pas "bon" s'il donne le résultat voulu, il est bon parce qu'il est bien écrit ce qui est difficile à prouver...

    Jc

  3. #3
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Citation Envoyé par fearyourself
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	for (k=0;k<l1;k++)
    	{
    		printf("entrez la valeur n %u \n",k);
    		scanf("%u",&tab1[k]);
    	}
    Sympa, donc lorsque tu calcules la longueur du tableau, tu supposes que l'ordinateur est assez gentil pour mettre un 0 derrière??
    j'ai du mal à saisir ce que tu souhaite exprimer ! peu tu le redire autrement ? Un 0 derriere quoi la je vois pas !

  4. #4
    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 agnesN7
    Bonjour,
    J'ai écrit cette fonction très simple qui me permet de concaténer deux tableaux en un troisième :
    Soit on travaille en adresse + sentinelle dans les données (comme une chaine, par exemple), soit on travaille en adresse, longueur (ce que je recommande ici).

    Modifie ton code pour être conforme à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    unsigned int* concat(unsigned int* tab1
                         , unsigned l1
                         , unsigned int* tab2
                         , unsigned l2
                        );
    et vire moi cette fonction 'longueur()' qui n'est pas appropriée ici.

  5. #5
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par gnto
    j'ai du mal à saisir ce que tu souhaite exprimer ! peu tu le redire autrement ? Un 0 derriere quoi la je vois pas !
    Regarde la fonction longueur, regarde ce que cela suppose et regarde comment le tableau et initialisé...

    Jc

  6. #6
    Membre régulier
    Femme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2005
    Messages : 98
    Points : 99
    Points
    99
    Par défaut
    Merci de vos remarques. Je suis désolée de vous faire bondir au plafond, mais malheureusement tout le monde n'a pas la chance d'avoir eu des enseignants compétents en programmation, et du coup je suis obligée de combler mes (grosses) lacunes sur le tas.

    Citation Envoyé par fearyourself
    Voici les remarques :

    Code :

    /* fonction qui met bout à bout tab2 avec tab1 */ unsigned int* concat(unsigned int* tab1, unsigned int* tab2) { unsigned int* tab3; unsigned int k, l1, l2; l1 = longueur(tab1,0,900); l2 = longueur(tab2,0,900);


    Erreur de conception, on passe la taille du tableau en paramètre, c'est dangereux, non scalable et source d'une erreur dans ton code d'utiliser ta fonction longueur...
    Citation Envoyé par Emmanuel Delahaye
    Soit on travaille en adresse + sentinelle dans les données (comme une chaine, par exemple), soit on travaille en adresse, longueur (ce que je recommande ici).
    Le problème c'est que je ne sais a priori pas combien de données utiles j'ai dans mes tableaux, c'est pour cela que j'ai fait cette fonction "longueur".
    Citation Envoyé par fearyourself
    Code :

    tab3 = malloc((l1+l2)*sizeof(unsigned int));

    Où est le test pour voir si malloc a échoué?

    Code :

    unsigned int longueur(unsigned int* vecteur, unsigned int k, unsigned int taille_max) { if (k != taille_max && vecteur[k] != 0) { k = longueur(vecteur, k + 1, taille_max); } return k; }

    Une récursive... Un for serait nettement mieux... Et si k est > à taille_max, c'est une récursive qui ne s'arrête jamais!
    Erreurs corrigées.
    Citation Envoyé par fearyourself
    Et si tu as un 0 dans ton tableau??
    Les données stockées dans mes tableaux ne peuvent pas être égales à zéro. C'est pour cela que j'utilise ce nombre pour signaler qu'il n'y a pas de donnée.
    Citation Envoyé par fearyourself
    On n'utilise pas scanf mais fgets et strtol.
    Si j'ai bien compris mes lectures, il faut donc que j'écrive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const char* cl1;
    fgets(cl1,3, stdin);
    	l1 = (unsigned int) strtol(cl1,NULL,0);
    ?
    Citation Envoyé par fearyourself
    A ne pas ignorer!!! Regarder dans les pages man (http://man.developpez.com/) pour savoir quels fichiers utilisés!
    J'ai rajouté un "#include <stdlib.h>" au début de mes fichiers; maintenant je n'ai plus de warning sur malloc ni sur free, par contre j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    concat.c:29: attention : implicit declaration of function ‘printf’
    concat.c:29: attention : incompatible implicit declaration of built-in function ‘printf’
    Je ne vois pas à quoi c'est dû, vu que stdio.h est inclus.
    Merci beaucoup d'avance pour votre aide

  7. #7
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    unsigned int* concat(unsigned int* tab1
                         , unsigned l1
                         , unsigned int* tab2
                         , unsigned l2
                        );
    Sur ce modele on peut créer une structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct {
    unsigned* tab;
    unsigned l;
    }
    De plus en faisant les allocations avec "calloc" les cases mémoires sont mises à 0.

  8. #8
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par agnesN7
    Merci de vos remarques. Je suis désolée de vous faire bondir au plafond, mais malheureusement tout le monde n'a pas la chance d'avoir eu des enseignants compétents en programmation, et du coup je suis obligée de combler mes (grosses) lacunes sur le tas.
    Bondir, pas du tout. C'est en programmant qu'on apprend. On essaie juste de montrer les erreurs.

    Si tu prends en considération ce qui est dit ici, tu n'auras pas perdu ton temps et nous non plus

    Le problème c'est que je ne sais a priori pas combien de données utiles j'ai dans mes tableaux, c'est pour cela que j'ai fait cette fonction "longueur".
    C'est pour cela que tu passes la longueur du tableau comme l'a montré Emmanuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    unsigned int* concat(unsigned int* tab1
                         , unsigned l1
                         , unsigned int* tab2
                         , unsigned l2
                        );
    Les données stockées dans mes tableaux ne peuvent pas être égales à zéro. C'est pour cela que j'utilise ce nombre pour signaler qu'il n'y a pas de donnée.
    C'est aussi ce que je pensais mais tu n'as pas mis un zéro explicitement à la fin du tableau donc pour trouver la taille tu sors du tableau... C'est une erreur courante et grave... Vu que tu connais la taille lors de la saisie tu peux construire une structure comme le montre seriousme ou juste garder les deux infos (tableau + taille) ensemble...

    Si j'ai bien compris mes lectures, il faut donc que j'écrive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const char* cl1;
    fgets(cl1,3, stdin);
    	l1 = (unsigned int) strtol(cl1,NULL,0);
    ?
    Ton tableau n'est pas alloué et pas initialisé! En compilant avec les options -Wall et -Wextra, tu l'aurais vu!

    Il faudrait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char cl1[32];
    if(fgets(cl1,sizeof(cl1),stdin)==NULL)
      {
      /* Gestion de l'erreur */
      }
    Pas de cast pour strtol...
    Ensuite, tu peux tester si strtol a fonctionné en passant un autre pointeur au lieu du NULL, voir la page man.

    J'ai rajouté un "#include <stdlib.h>" au début de mes fichiers; maintenant je n'ai plus de warning sur malloc ni sur free, par contre j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    concat.c:29: attention : implicit declaration of function ‘printf’
    concat.c:29: attention : incompatible implicit declaration of built-in function ‘printf’
    Je ne vois pas à quoi c'est dû, vu que stdio.h est inclus.
    Merci beaucoup d'avance pour votre aide
    Bizarre, faudra résoudre ce problème... Probablement un compilateur mal réglé...

    Jc

  9. #9
    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 agnesN7
    Si j'ai bien compris mes lectures, il faut donc que j'écrive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const char* cl1;
    fgets(cl1,3, stdin);
    	l1 = (unsigned int) strtol(cl1,NULL,0);
    ?
    Horrible. Tu passes la valeur d'un pointeur indéterminé à une fonction. Le comportement est indéfini. Tout peut arriver.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       const char s[8];
       fgets (s,sizeof s, stdin);
       l1 = (unsigned int) strtoul (s, NULL, 10);
    Au minimum...

    http://emmanuel-delahaye.developpez....tes.htm#saisie
    http://emmanuel-delahaye.developpez....s.htm#fichiers

  10. #10
    Membre régulier
    Femme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2005
    Messages : 98
    Points : 99
    Points
    99
    Par défaut
    Bonjour,

    Après avoir corrigé mes fgets et rajouté les longueurs de mes tableaux en paramètres de concat comme vous me l'aviez conseillé, mon programme semble s'exécuter correctement.
    Merci beaucoup pour votre aide

  11. #11
    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 agnesN7
    Merci beaucoup pour votre aide
    A votre service Mademoiselle Agnès ... mmm...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'impression très bizarre (pour le moment)
    Par over_score dans le forum AS/400
    Réponses: 0
    Dernier message: 24/10/2012, 17h37
  2. [PHP 5.0] problème str_replace, eregi très bizarre
    Par Ronin dans le forum Langage
    Réponses: 10
    Dernier message: 21/04/2010, 15h55
  3. temps d'exécution trop long trés bizarre
    Par fatjoe dans le forum C++
    Réponses: 0
    Dernier message: 09/05/2008, 03h42
  4. gcc : problème d'exécution
    Par Anouschka dans le forum C
    Réponses: 5
    Dernier message: 07/06/2006, 16h42
  5. Problème très bizarre avec COUNT
    Par Nomade95000 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/10/2005, 15h12

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