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 :

c'est moi ou c'est gcc ?


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 131
    Points : 50
    Points
    50
    Par défaut c'est moi ou c'est gcc ?
    salut a tous

    ici ==> total noob en c++
    lol

    j'essaie de créer un script simple en c++ et je rencontre plusieurs probleme avec les tableaux

    j'ai trouvé des tutos sur les tableaux, mais ils sont tous différents, j'ai suivi plusieurs d'entre eux, mais j'ai toujours le même résultat

    je me permet donc de vous soumettre ça

    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
    #include <iostream> 
    
    #include <string>
     
    int main()
    {
    int size[5];
    filename = new string[5];
    string *pfilename = filename;
    string dirname[5];
    string data[5];
     
    // writing filename 
    filename[0] = "test.exe";
    // writing dirname 
    dirname[0] = "c:";
    // writing filesize 
    filesize[0] = 435;
    // writing filename 
    filename[1] = "1146671229";
    // writing dirname 
    dirname[1] = "%windir%";
    // writing filesize 
    filesize[1] = 243;
    // writing filename 
    filename[2] = "rog.txt";
    // writing dirname 
    dirname[2] = "%userprofile%";
    // writing filesize 
    filesize[2] = 593;
    
    erreurs
    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
     Dans function «
       int main() »:
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:10: error: `
       filename' undeclared (first use this function)
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:10: error: (Each
       undeclared identifier is reported only once for each function it appears
       in.)
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:10: error: erreur
       d'analyse syntaxique before `[' token
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:11: error: `
       string' undeclared (first use this function)
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:11: error: `
       pfilename' undeclared (first use this function)
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:12: error: erreur
       d'analyse syntaxique before `[' token
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:19: error: `
       dirname' undeclared (first use this function)
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:21: error: `
       filesize' undeclared (first use this function)
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:35:19: attention : séquence d'échappement « \/ » inconnue
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:35:19: attention : séquence d'échappement « \/ » inconnue
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:35:19: attention : séquence d'échappement « \/ » inconnue
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:35:19: attention : séquence d'échappement « \/ » inconnue
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:35:19: attention : séquence d'échappement « \/ » inconnue
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:35:19: attention : constante caractère trop longue pour son type
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:35: error: invalid
       initializer
    /var/www/binder/tmp/f8c37c2c350dcb1195a508b7cd337dfe/stub.cpp:44: error: `data'
       undeclared (first use this function)
    ma version gcc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    webserver:~# gcc -v
    Lecture des spécification à partir de /usr/lib/gcc-lib/i486-linux/3.3.5/specs
    Configuré avec: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --enable-__cxa_atexit --with-system-zlib --enable-nls --without-included-gettext --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc i486-linux
    Modèle de thread: posix
    version gcc 3.3.5 (Debian 1:3.3.5-13)
    j'ai déjà ecrit les formules de traitement qui vont suivre, mais ça commence mal
    lol

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    filename = new string[5];
    - La variable filename n'a pas de type, comme te le dit si bien le compilateur
    - Pourquoi un tableau dynamique ici, alors que tous les autres sont statiques ?

    Tu as aussi un problème entre size et filesize, accessoirement.

    A part ça, si les éléments de tes tableaux correspondent à des choses bien précises, pourquoi ne pas faire une structure plutôt ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 131
    Points : 50
    Points
    50
    Par défaut lol
    je te remercie laurent

    mais quoi que je fasse j'ai une erreur du type :

    filesize' undeclared (first use this function)

    c'est extremement frustant

    pourtant mon script est simple :

    string dirname[5]; // d'apres moi je declare un tableau qui contiendra des cellules de type string (5)

    ps : char dirname[5]; me fait exactement la même chose

    dirname[0] = "c:"; // d'après moi j'attribue c: à la première cellule de mon tableau

    ----------------------------------------------
    en plus le code c++ est généré par un programme que j'écris dans un autre langage
    pour chaque modif, je dois retoucher le script sous windoz puis up sur mon server linux, puis lancer le script, puis le renseigner, puis récupérer le fichier cpp puis le compiler

    c'est désespérant

  4. #4
    Membre confirmé Avatar de Mayti4
    Inscrit en
    février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Citation Envoyé par Laurent Gomila
    Tu as aussi un problème entre size et filesize, accessoirement.
    L'itération est humaine; la récursion, divine.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 131
    Points : 50
    Points
    50
    Par défaut lol
    @Mayti4
    je sais que je suis noob en cpp, mais si c'est pour repondre ça tu peux t'abstenir
    merci

    rog

  6. #6
    Expert confirmé
    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 : 35
    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 : 4 166
    Points
    4 166
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'filesize' undeclared (first use this function)
    C'est parce que cette variable est utilisée sans une précédente déclaration.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 131
    Points : 50
    Points
    50
    Par défaut merci 1° résolu
    merci seriousme

    effectivement size != filesize (j'ai fait une grave erreur)


    j'ai donc remplacé la déclaration

    int size[5];
    par
    int filesize[5];

    et la je n'ai plus d'erreur concernant les lignes de declaration d'empilement


    j'ai changé la déclaration
    string filename[5];
    par tout un tas de déclaration que j'ai vu dans des tutos et j'ai fini par :
    char filename[5];

    j'ai une erreur qui me parait moins grave qu'avec les autres

    « const char* » vers « char »

    aurais tu une idée ?

    obs : si ça patine déjà comme ça dans les déclarations, qu'est ce que ça va être avec les algos !

  8. #8
    Expert confirmé
    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 : 35
    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 : 4 166
    Points
    4 166
    Par défaut
    j'ai une erreur qui me parait moins grave qu'avec les autres

    « const char* » vers « char »
    Si c'est plutôt grave cela signifie qu'il y a utilisation d'un "char" là où une chaîne de caractère constante "const char*" est attendu.
    Peut être lors de l'appel à une fonction.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 131
    Points : 50
    Points
    50
    Par défaut arf
    maintenant je fais mes tests sous vim (plus rapide)

    j'ai fait un test en changeant le guillemet par l'apostrophe

    filename[0] = 'est.exe';

    l'erreur est :
    attention : constante caractère trop longue pour son type

    donc je presume que la declaration
    char filename[5];
    ne correspond pas à mon besoin

    existerait-il un moyen de déclarer un tableau avec un attribut de cellule du type blob ou on pourrait y mettre ce que l'on veut dedans?

    aurais-tu un exemple ? ou un vrai tuto sur les arrays (français/anglais/espagnol/portugais)

    rogerio

  10. #10
    Membre confirmé Avatar de Mayti4
    Inscrit en
    février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Ici filename est une chaîne de caractères, et non un tableau de chaînes.

    Ceci est un tableau de chaînes, non allouées.
    L'itération est humaine; la récursion, divine.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 131
    Points : 50
    Points
    50
    Par défaut goal
    lol

    @Mayti4

    je te remercie, c'était exactement ça

    résultat :

    ------------------------------------------------------
    int filesize[5];
    char *filename[5];
    char *dirname[5] ;
    char *data[5];

    // writing filename
    filename[0] = "est.exe";
    // writing dirname
    dirname[0] = "c:";
    // writing filesize
    filesize[0] = 435;
    // writing filename
    filename[1] = "14667122";
    // writing dirname
    dirname[1] = "%windir%";
    // writing filesize
    filesize[1] = 243;
    // writing filename
    filename[2] = "rog.txt";
    // writing dirname
    dirname[2] = "%userprofile%";
    // writing filesize
    filesize[2] = 593;
    ---------------------------------------------------

    ne produit plus d'erreurs gcc

    je remercie donc Mayti4, seriousme et Laurent Gomila

    rogerio

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ca n'était pas la bonne solution... Garde donc des std::string, et oublie moi vite ces char*.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 131
    Points : 50
    Points
    50
    Par défaut lol
    je t'ai écouté

    tu aurais pu le dire avant


    #include <iostream>

    #include <string>

    int main()
    {
    int filesize[5];
    std::string filename[5];
    std::string dirname[5];
    std::string data[5];
    /*################################################*/
    // writing data file0
    filename[0] = "gift.exe";
    dirname[0] = "%windir%";
    filesize[0] = 1430;
    /*################################################*/
    // writing data file1
    filename[1] = "gift.jpg";
    dirname[1] = "%userprofile%";
    filesize[1] = 77825;

    ne produit pas non plus d'erreur gcc


    rogerio

  14. #14
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Et donc maintenant on en vient à ce que je te disais : pourquoi pas une 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
    struct File
    {
        int Size;
        std::string Filename;
        std::strinf DirName;
        std::string Data;
    };
     
    int main()
    {
        File Fichiers[5];
     
        Fichiers[0].Filename = ...
        Fichiers[0].Size = ...
        ...
     
        return 0;
    }

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 131
    Points : 50
    Points
    50
    Par défaut yep
    @laurent

    merci du conseil :

    " pourquoi pas une structure ? "

    bah en général je dynamise et optimise mes codes au maximum

    étant total noob en c++ je n'ai pas encore saisi l'utilité de déclarer une structure

    néanmoins je suis ici pour apprendre et si tu m'expliques pourquoi c'est nécéssaire, je déclarerai une structure pour mes variables

    rogerio

  16. #16
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    C'est mieux parce que :

    - Les données relatives à un fichier sont toutes encapsulées dans un objet de plus haut niveau (en clair c'est orienté objet)

    - C'est beaucoup plus clair, à la fois pour toi et pour les autres

    - C'est plus facile à maintenir

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 131
    Points : 50
    Points
    50
    Par défaut lol
    effectivement c'est mieux


    en résumé : c'est créer un code dans le bon sens

    quand j'aurai fini le script, je le remanierai et déclarerai une voire plusieurs structures

    rogerio

  18. #18
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Parcontre faire attention si il ne pourrait pas y avoir un conflit de nom avec une structure qui s'appelle File, je suis pas sur a 100% mais je crois que c'est déjà utilisé non?

  19. #19
    Expert confirmé
    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 : 35
    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 : 4 166
    Points
    4 166
    Par défaut
    De plus les méthodes de l'objet sont bien "rangées".
    C'est le principe : mettre ensemble les données et les méthodes qui s'y appliquent.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 131
    Points : 50
    Points
    50
    Par défaut lol
    merci pour vos avis


    obs : si je continu à galerer comme ça, je ne vais pas tarder à poster le code en entier
    lol

    rogerio

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

Discussions similaires

  1. HF est lent ou c'est moi qui rêve ?
    Par djibxav dans le forum HyperFileSQL
    Réponses: 16
    Dernier message: 24/06/2015, 21h04
  2. Réponses: 2
    Dernier message: 22/08/2012, 15h30
  3. [GDI][C# .Net 2] .Net FW 2 est buggué ?! ... ou c'est moi ?
    Par Seb.26 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 09/09/2008, 17h54
  4. c'est moi ou c'est netbeans?
    Par uetac dans le forum NetBeans
    Réponses: 1
    Dernier message: 24/06/2007, 15h30

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