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 de string et de cast


Sujet :

C

  1. #1
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut Probleme de string et de cast
    Bonjour à tous.

    J'ai un problème (ptetr tout bete pour vous gds gourous du C) avec ce code (entre autres... ) :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    /* 
    MODULE : CREER enregistrement du texte
    Role : manipulation d'un enregistrement de 30 mots
    Structures manipulees : enregistrement
    Dependances : <stdio.h>
    */
    #include <stdio.h>
    #include "createRecord.h"
     
    FILE * ptrFich;
     
     
    /*
    Nom : createRecord
    Role : creer un enregistrement de 30 mots pour faciliter et accelerer le traitement du texte à indexer
    Signature : FILE * -> ENREGISTREMENT *
    Entrée : -
    Sortie : ENREGISTREMENT * record
    MAJ : -
    Dependances : <stdio.h>
    Algorithme : 
        DEBUT
            indice : entier, indice de parcours du tbl;
            indice<-0;
            Lire le fichier pointé par ptrFile;
            TANT_QUE indice<30 FAIRE
                indice++;
                record(indice)<-mot_courant;
            FIN_TANT_QUE
            Retourner record;
                
        FIN
     
     
    */
    char * createRecord(FILE * ptrFile)
    {
        int nb_mots;
        char tab_enr[50];
        char * mot;
        char caractere;
        char sep[]="|-><,(); :.\'\t\0 «»";
        nb_mots=0;
        if (ptrFile!=NULL)
        {    ptrFich=ptrFile;
        }
        while (!feof(ptrFich) || fgetc(ptrFich)!='\n')
        {    caractere=fgetc(ptrFich);
            int i=0;
            int bool=0;
            //on cherche si le caractère correspond à un séparateur dans le
            //tableau de séparateur
            while (i<16 || bool==1)
            {    if (caractere==sep[i])
                    bool=1;
            }
            //si ce n'est pas un séparateur on écrit le mot
            if (bool==0)
            {    strcat(mot,caractere);
            }
            else 
            {    tab_enr[nb_mots]=mot;
                nb_mots ++;
            }
            i++;
        }
        tab_enr[nb_mots]='/n';
        return tab_enr;         
     
    }
    Voici les messages obtenus à la compilation :

    gcc -W createRecord.c -o createRecord
    createRecord.c:8:26: createRecord.h: No such file or directory
    createRecord.c: In function `createRecord':
    createRecord.c:60: warning: passing arg 2 of `strcat' makes pointer from integer without a cast
    createRecord.c:63: warning: assignment makes integer from pointer without a cast
    createRecord.c:68:19: warning: multi-character character constant
    createRecord.c:68: warning: overflow in implicit constant conversion
    createRecord.c:69: warning: function returns address of local variable
    Je comprends pas... Certes ce ne sont "que" des warnings mais c inquiétant vu leur nature !

    Pouvez-vous m'aider ?
    Pourquoi les pointeurs de char ne sont ils pas acceptés comme cela devrait l'^etre au vu du man des fonctions utilisees.

    Merci d'avance.
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  2. #2
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Citation Envoyé par panda31
    Pourquoi les pointeurs de char ne sont ils pas acceptés comme cela devrait l'^etre au vu du man des fonctions utilisees.
    J'ai juste regarder la fonction strcat() et tu l'emploies mal.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strcat(mot,caractere);
    Voici comment tes variables sont déclarées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char * mot;
    char caractere;
    -> La variable "caractère" n'est pas un pointeur sur char.
    -> L'espace mémoire pointé par le pointeur "mot" n'a pas été alloué: Utilisation de la fonction malloc() puis de free() pour libérer les ressources.

    man strcat()

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    En plus, ça va carrement planté pour la fonction utilisatrice.

    Et tu retournes :

    qui est une variable locale (c'est un pointeur). Donc qui ne sera pas accessible pour une fonction appelante.


    Tu fais :

    Je ne vois pas à quoi ça sert.

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Et encore une erreur :

    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
          int i=0;
            int bool=0;
            //on cherche si le caractère correspond à un séparateur dans le
            //tableau de séparateur
            while (i<16 || bool==1)
            {    if (caractere==sep[i])
                    bool=1;
            }
            //si ce n'est pas un séparateur on écrit le mot
            if (bool==0)
            {    strcat(mot,caractere);
            }
            else 
            {    tab_enr[nb_mots]=mot;
                nb_mots ++;
            }
            i++;
    Ton i est réinitialisé à chaque tour de boucle... Je pense pas que c'est ce que tu souhaites.

  5. #5
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Hello,

    Citation Envoyé par panda31
    Bonjour à tous.

    J'ai un problème (ptetr tout bete pour vous gds gourous du C) avec ce code (entre autres... ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /* 
    MODULE : CREER enregistrement du texte
    Role : manipulation d'un enregistrement de 30 mots
    Structures manipulees : enregistrement
    Dependances : <stdio.h>
    */
    #include <stdio.h>
    #include "createRecord.h"
    Apparement, comme signalé à la compilation, gcc ne trouve pas createRecord.h, problème de casse (createrecord.h peut être) ou problème de chemin.

    Citation Envoyé par panda31
    C'est une globale, pas beau, mais bon...Il faut au moins l'initialiser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FILE * ptrFich = NULL;
    Citation Envoyé par panda31
    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
     
     
    /*
    Nom : createRecord
    Role : creer un enregistrement de 30 mots pour faciliter et accelerer le traitement du texte à indexer
    Signature : FILE * -> ENREGISTREMENT *
    Entrée : -
    Sortie : ENREGISTREMENT * record
    MAJ : -
    Dependances : <stdio.h>
    Algorithme : 
        DEBUT
            indice : entier, indice de parcours du tbl;
            indice<-0;
            Lire le fichier pointé par ptrFile;
            TANT_QUE indice<30 FAIRE
                indice++;
                record(indice)<-mot_courant;
            FIN_TANT_QUE
            Retourner record;
                
        FIN
     
     
    */
    char * createRecord(FILE * ptrFile)
    {
        int nb_mots;
        char tab_enr[50];
        char * mot;
        char caractere;
        char sep[]="|-><,(); :.\'\t\0 «»";
        nb_mots=0;
        if (ptrFile!=NULL)
        {    ptrFich=ptrFile;
        }
        while (!feof(ptrFich) || fgetc(ptrFich)!='\n')
        {    caractere=fgetc(ptrFich);
    Ici, il y a déjà pas mal de choses à dire. Initialiser les pointeurs et tant qu'on y est les tableaux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char tab_enr[50] = { '\0' };
    char * mot = NULL;
    Ensuite, il ne faut pas utiliser feof() de cette façon. feof() indique si l'indicateur de fin de fichier a été positionné ou non. Or, il n'est d'une part pas évident que la fin de fichier soit atteinte lors d'un échec de lecture. D'autre part, il faut attendre qu'un échec de lecture survienne (i.e fgetc() a renvoyé EOF) aussi pour la vraie fin de fichier, ce qui fait qu'un tour de boucle supplémentaire est effectué. Il suffit de tester le retour de fgetc() et de voir si c'est EOF ou non. Le fgetc(ptrFich)!='\n' ne sert à rien.

    int caractere;
    while ( (caractere=fgetc(ptrFich) ) != EOF)
    {
    /*...*/
    }
    /* Test si l'échec de fgetc() est bien du à la fin de fichier, et pas une erreur de lecture autre */
    if (feof(ptrFich)) { /* OK*/ }

    Citation Envoyé par panda31
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
            int i=0;
            int bool=0;
            //on cherche si le caractère correspond à un séparateur dans le
            //tableau de séparateur
            while (i<16 || bool==1)
            {    if (caractere==sep[i])
                    bool=1;
            }
    Et non
    Je te laisse le soin de voir pourquoi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while (i<16 && !bool)
    {    if (caractere==sep[i]) {
                    bool=1;
          }
    }
    Citation Envoyé par panda31
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
           //si ce n'est pas un séparateur on écrit le mot
            if (bool==0)
            {    strcat(mot,caractere);
            }
            else 
            {    tab_enr[nb_mots]=mot;
                nb_mots ++;
            }
            i++;
    Et boum, mot n'est ni initialisé et ne pointe pas vers un bloc de mémoire alloué. Par ailleurs, caractere n'est pas une chaine de caracteres, marche pas. nb_mots n'est pas initialisé et ne vaut pas forcément 0 au début, le compilo lui affecte la valeur qui lui plaît, 4879 par exemple, au pif. Il ya un problème conceptuel important ici, une confusion caractere/mot. Ce que tu souhaites, c'est concatener plusieurs caracteres n'étant pas des séparateurs pour en faire un mot puis insérer ce dernier dans untableau de mots. tab_enr est un tableau de char, donc peut contenir une chaine de caractères et non plusieurs.
    Pour être franc, il faut tout repenser et tout refaire.

    Citation Envoyé par panda31
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
        }
        tab_enr[nb_mots]='/n';
        return tab_enr;         
     
    }
    Voici les messages obtenus à la compilation :


    Je comprends pas... Certes ce ne sont "que" des warnings mais c inquiétant vu leur nature !
    Non, c'est normal, strcat() n'est par exemple pas utilisé correctement.
    A+

  6. #6
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tab_enr[nb_mots]=mot;
    nb_mots ++;
    Et là, je dirais qu'il faudrait que tu nous dises ce que ton programme est censé faire.
    A mon avis, tu souhaites sauvegarder tout les mots que tu détectes. Si c'est bien le cas, tu dois définir un tableau à deux dimensions et utiliser la fonction memcpy().

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par homeostasie
    -> L'espace mémoire pointé par le pointeur "mot" n'a pas été alloué: Utilisation de la fonction malloc() puis de free() pour libérer les ressources.

    Si tu veux éviter d'utiliser un malloc.

    Tu peux passer en paramètre ton pointeur tab_enr.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int createRecord(FILE * ptrFile, char* tab_enr, unsigned int tailletab)
    Qui retourne EXIT_SUCESS si tout s'est bien passé ou EXIT_FAILURE si par exemple tab_enr était trop petit.

    Une méthode pour retourner un char* sans passer par malloc serait de déclarer ta variable static, mais je te déconseilles fortement. (si tu réalises deux appels de suites, ton ancienne valeur sera écrasée).

  8. #8
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut
    Merci à tous de vos critiques si constructives.

    Au sujet des initialisations de pointeurs à NULL, mon pb est que là où je bosse, cela me marque à la compilation que NULL n'est pas reconnu !

    Autre chose, les .H manquant c'est normal vu que nous ne les avons pas écrits encore. Eh oui, on est deux sur le code. Perso, en C, tout ce que j'ai codé se rapportait à des nombres et des matrices de nombre donc les char, j'y pige pas grand chose. Mon truc à moi était d'interfacer avec un langage plus "simple" comme Python ()mais là, j'ai la contrainte du langage C imposé ! (grrrr) Le programme que je fais est censé indexer un texte à partir d'une liste de mots non-clés. Du coup, toutes les fonctionnalités sont "empaquetées" dans des modules spécialisés selon le diagramme SD fourni en PJ.

    En perl, c'était simplissime à faire, mais en C... Personnellement, je préfère les langages haut niveau donc le C...

    Merci encore de votre aide si précieuse, demain, je vois ce que je peux corriger sur le code.
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    NULL est supposé être défini dans <stdlib.h> au minimum.
    (Edit: perdu, c'était <stddef.h>)
    Si ce n'est pas le cas, vous pouvez toujours rajouter ceci dans votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifndef NULL
    #define NULL ((void*)0)
    #endif
    C'est une définition assez passe-partout de NULL, qui devrait marcher sur tout compilateur C qui supporte les pointeurs void*...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Expert éminent
    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
    Par défaut
    Citation Envoyé par panda31
    En perl, c'était simplissime à faire, mais en C... Personnellement, je préfère les langages haut niveau donc le C...
    Ne viens pas ici pour critiquer notre cher langage (il y a un forum pour ça). Rassure-toi, on est parfaitement au courant de ses défauts et des ses domaines d'application.

    Savoir choisir le bon outil fait aussi partie de ce métier...

  11. #11
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Tu veux dire <stddef.h>
    NULL doit être défini dans
    - stddef.h (l'entête à inclure de préférence pour avoir NULL)
    - locale.h
    - stdio.h
    - stdlib.h
    - string.h
    - time.h
    j'espère ne pas en avoir oublié.

  12. #12
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut
    Citation Envoyé par homeostasie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tab_enr[nb_mots]=mot;
    nb_mots ++;
    Et là, je dirais qu'il faudrait que tu nous dises ce que ton programme est censé faire.
    A mon avis, tu souhaites sauvegarder tout les mots que tu détectes. Si c'est bien le cas, tu dois définir un tableau à deux dimensions et utiliser la fonction memcpy().
    Alors je reviens tout d'abord sur le but et le fonctionnement souhaité de mon programme.
    Nous avons eu comme sujet :
    Il s'agit de concevoir et coder un programme en C qui, a partir d'un fichier texte et d'une liste de mots "non-clés", produise un index indiquant le nombre d'occurences de chaque mot clé du texte, avec les numéros de ligne corresondantes.
    • Si un meme mot clé apparait deux fois dans une meme ligne, le numéro de la ligne n'apparait qu'une seule foisdans l'index.
    • Si un mot apparait plusieurs fois (par défaut max=50) dans le texte (nombtre configurable), il ne doit pas apparaitre dans l'index.
    • L'index doit pouvoir etre visualisé ou listé "a la demande"
    • Dans les deux cas, le résultat doit apparaitre classé par nombre d'occurences, par ordre alphabétique des mots clés.
    • Prendre en compte le multilinguisme.
    Comme vous pouvez le voir, c'est très restricitf et pas du tout adapté au langage C ! mais bon, la parole d'un prof est parole d'évangile !... enfin, ca reste a prouver.

    Dans mon dernier poste, j'ai mis en PJ le diagramme SD de l'architecture. Voici en PJ les sources déjà faites (aucun .h pour le moment !).

    Si ca tente quelqu'un de se plonger dans les méandres de notre inculture C-iste, bon courage et surtout merci beaucoup de la patience dont vous faites preuve !

    Ma collègue de binome me fait vous dire que le problème principal semble résider dans l'utilisation de TOUTES les fonctions de manipulations de fichier et de chaines de caracteres.

    Enfin, pourquoi un tableau deux dimensions? et problème de renvoi de tableau meme qd passé en paramètre par référence dans nos fonctions.

    Merci encore et d'avance pour votre dévouement !

    Vive le C
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  13. #13
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Citation Envoyé par panda31
    Enfin, pourquoi un tableau deux dimensions?
    Dans ton cas, afin de réaliser un tableau de pointeurs sur chaines de caractères.
    Par exemple pour faire ta liste de mots.

    Citation Envoyé par panda31
    et problème de renvoi de tableau meme qd passé en paramètre par référence dans nos fonctions.
    Je pense que tu veux parler de pointeurs et non de références. En C++, la notion de références existent bien mais pas en C si je ne m'abuse...Il y a bel et bien une différence de notion entre ces deux: la référence est l'objet alors que le pointeur pointe sur l'objet.
    Pourrais tu montrer le prototype de ta fonction?

    Citation Envoyé par panda31
    Ma collègue de binome me fait vous dire que le problème principal semble résider dans l'utilisation de TOUTES les fonctions de manipulations de fichier et de chaines de caracteres.
    Quel problème?
    Pour comprendre le rôle et utiliser correctement ces fonctions, il est possible de retrouver la documentation technique sur le net. En faisant par exemple sur google:
    man strcat: http://www.google.fr/search?hl=fr&q=...chercher&meta=

  14. #14
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut
    En fait, je crois qu'il y a un pb sur notre terminal : on a meme avec un fichier vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Undefined                       first referenced
     symbol                              in file
    afficherMnc                         /var/tmp//ccKU2TSl.o
    ld: fatal: Symbol referencing errors. No output written to viewMNC
    collect2: ld returned 1 exit status
    HEEEEELP

    Ce mesasge ne nous quitte pas meme avec un simple printf !
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

Discussions similaires

  1. Probleme de string
    Par reventlov dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/03/2006, 17h50
  2. [debutant] probleme de string
    Par lamoueste dans le forum Langage
    Réponses: 3
    Dernier message: 22/02/2006, 11h35
  3. [RegEx]Probleme avec String.split
    Par sebastieng dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 09/02/2006, 21h24
  4. probleme capacité string
    Par jmjmjm dans le forum Langage
    Réponses: 5
    Dernier message: 06/01/2006, 15h38
  5. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 09h39

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