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 :

Erreur de compilation


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Erreur de compilation
    Bonjour à tous,

    Avant tout je tiens à dire que je ne suis pas un professionnel de l'informatique et que je me suis remis à la programmation car j'aimais ça du temps où j'étais étudiant (ça remonte à une dizaine d'années et je ne suis pas allé bien loin...). Par conséquent, j'ai quelques notions mais sans plus. J'ai décidé de me remettre au C en me replongeant dans la lecture du Kernighan et Ritchie. Je n'en suis qu'au début et j'ai déjà un problème auquel je ne trouve pas de solution : le boulet . Il s'agit de l'exercice 1-20 dans lequel il faut remplacer les tabulations par le nombre d'espaces nécessaires pour atteindre la prochaine tabulation. Voici mon code :

    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
    //Programme qui remplace les tabulations par le nombre d'espaces necessaires pour atteindre la prochaine tabulation
     
    #include <stdio.h>
     
    #define MAXLINE 1000
    #define SPACING 6
     
    void chain (char [], int, int);              //Crée une chaîne de caractères
    void efface (char [], int);                  //Efface une chaîne de caractères
    void remplace (char [], char [], int );      //Remplace les tabulations par le nombre d'espaces necessaires pour atteindre la prochain tabulation
     
    main()
    {
         char line[MAXLINE] = "\0";
         char newline[MAXLINE] = "\0";
         int c, i;
         i = 0;
         c = getchar ();
         while (c != EOF){
               chain (line, MAXLINE, c);
               remplace (line, newline, c);
               printf ("%s\n", newline);
               efface (line, i);
               c = getchar ();
         }
         getchar ();
    }
     
    void chain (char s[], int MAXLINE, int c)
    {
         int i;
         i = 0;
         if (c == '\n')
            s[i] = '\0';
         else{
              while (c != '\n' && c != EOF && i < MAXLINE){
                    s[i] = c;
                    ++i;
                    c = getchar ();
              }
              s[i] = '\n';
              s[i + 1] = '\0';
         }
    }
     
    void remplace (char line[], char newline[], int i)
    {
         int j, h;
         i = j = h = 0;
         while (line[j] != EOF && line[j] != '\n'){
               if (line[j] != '\t'){
                           newline[h] = line[j];
                           j++;
                           i++;
               }
               else{
                    i = j % SPACING;
                    while (--i > 0)
                          newline[h++] = ' ';
                    i++;
                    }
         }
    }
     
    void efface (char s[], int i)
    {
         for (i = 0; s[i] != '\0'; ++i)
             s[i] = 0;
    }
    La fonction qui pose problème ici est la fonction "chain". Voici les erreurs à la complilation :

    29 C:...\Programme qui remplace les tabulations par le nombre d'espaces necessaires pour atteindre la prochaine tabulation.cpp expected `,' or `...' before numeric constant

    C:...\Programme qui remplace les tabulations par le nombre d'espaces necessaires pour atteindre la prochaine tabulation.cpp In function `void chain(char*, int)':

    33 C:...\Programme qui remplace les tabulations par le nombre d'espaces necessaires pour atteindre la prochaine tabulation.cpp `c' undeclared (first use this function)

    J'ai déjà utilisé cette fonction dans d'autres codes et je n'ai eu aucun problème. Si l'erreur est "évidente", désolé mais vraiment je ne comprends pas du tout ce qui se passe.

    Merci d'avance pour vos réponses éclairées.

    Pattesvador.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    peux-tu utiliser la balise CODE (#) pour encadrer ton code (plus lisible), merci. En plus, les numéros de ligne correspondront peut-etre à tes lignes d'erreur.

    tu compiles avec quel outil ? Visual, gcc ?

    Edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void chain (char s[], int MAXLINE, int c)
    le " int MAXLINE" est une erreur.
    la fonction doit etre tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void chain (char s[], int c)

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 677
    Points
    13 677
    Billets dans le blog
    1
    Par défaut
    Ton pré-processeur remplace MAXLINE par sa valeur (1000). Ce qui change le prototype de ta fonction en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void chain (char s[], int 1000, int c)
    Comme l'a dit mala92, il te suffit de supprimer ce paramètre. MAXLINE sera forcément "connu" dans la fonction. Les autres erreurs doivent découler de la première (seule que j'ai avec CodeBlocks sous Windows).

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci à mala92 et Bktero ! Évidemment ! Comment ai-je pu faire cette erreur !? La réponse est simple et s'explique en deux points : Je suis d'abord un . Enfin, le fait d'avoir utilisé cette fonction dans d'autres programmes sans que ça pose de problème ne m'a pas permis de me rendre compte de l'énormité de mon erreur. En effet, vu mon "#define" il est totalement inutile de faire appel en argument de la fonction à un int qui porte ce nom. Je tâcherai d'être plus attentif lors de l'écriture de mes futurs programmes. Encore merci à vous deux.

    P.S. Je travaille sous windows 7 avec Dev-C++. Je m'assurerai de bien baliser mon code et aussi de bien préciser mon système et l'environnement de développement.

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    Je travaille ... avec Dev-C++
    Tu sais depuis la fin de tes études les outil ont évolué !!! (même pour ton apprentissage)
    http://www.developpez.net/forums/d11...liser-dev-cpp/

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 677
    Points
    13 677
    Billets dans le blog
    1
    Par défaut
    Puisque tu es nouveau et que j'ai ton premier sujet résolu, je te rappelle qu'il faut que tu cliques sur le bouton Résolu en bas de la page pour marquer le sujet comme tel

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci à vous ! Bah j'ai pris Dev-C++ parce que ça a fonctionné tout de suite, code blocks je n'ai pas réussi et je voulais vraiment commencer à coder, ça me démangeait fortement donc j'ai choisi la facilité . Si tu as autre chose à me conseiller mala92, je suis ouvert à toutes propositions. Et merci Bktrero de m'avoir indiqué de cliquer sur le bouton "résolu".

    Vivement les pointeurs... (humour ironique d'informaticien)

  8. #8
    Rédacteur

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

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

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

    Dev C++ est obsolète depuis une dizaine d'année

    Code::Blocks est assez proche, il faut juste faire gaffe à prendre la bonne version qui intègre le compilateur mingw (portage de gcc sous Windows). Sinon t'as d'autres EDI à jour et qui sont pas mal ...

    Cordialement,
    Idriss

  9. #9
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ok.Idriss Voir le message
    Bonsoir.

    Dev C++ est obsolète depuis une dizaine d'année

    Code::Blocks est assez proche, il faut juste faire gaffe à prendre la bonne version qui intègre le compilateur mingw (portage de gcc sous Windows). Sinon t'as d'autres EDI à jour et qui sont pas mal ...

    Cordialement,
    Idriss
    Merci ok.Idriss, mais pourrais-tu me mettre un lien ou quelque chose de la sorte s'il te plaît ? Je suppose qu'il y a tout ce qu'il faut sur le site ? Merci encore à tous.

  10. #10
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 677
    Points
    13 677
    Billets dans le blog
    1

  11. #11
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour les liens mais sinon quel est celui que vous utilisez ?

  12. #12
    Rédacteur

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

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

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

    Personnellement, les quelques fois où il m'arrive de faire du C, je code principalement avec gcc et les Makefiles sous Linux. Quand j'étais sous Windows, j'utilisais Code::Blocks.

    J’utilise aussi beaucoup NetBeans pour d'autres langages mais il me semble qu'il existe un plugin pour le C et C++. Toutefois, je te conseil de démarrer avec Code::Blocks (multiplateforme, maintenu à jour, très rependu, ...).

    Cordialement,
    Idriss

  13. #13
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 677
    Points
    13 677
    Billets dans le blog
    1
    Par défaut
    Tu parles du lien ou de l'environnement ?

    Si tu parles de lien, à toi de choisir.

    Si tu parles d'environnement, j'utilise CodeBlocks sous Windows et sous Ubuntu (quoique ma touche 'espace' n'a aucune effet dans dernière installation sous Ubuntu et du coup je fais vim/gedit/gcc).

  14. #14
    Rédacteur

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

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

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

    Citation Envoyé par Bktero Voir le message
    (quoique ma touche 'espace' n'a aucune effet dans dernière installation sous Ubuntu et du coup je fais vim/gedit/gcc).
    ça c'est une petite configuration à faire au niveau de GNOME, un truc du genre :

    Système
    => Préférences
    => Clavier
    => Agencements
    => Options de l'agencement…
    => Utiliser la barre d'espacement peut insérer un espace insécable
    => La barre d'espacement renvoie une espace ordinaire à tous les niveaux

    Cordialement,
    Idriss

  15. #15
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 677
    Points
    13 677
    Billets dans le blog
    1
    Par défaut
    Niquel ! Merci !

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

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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