Problème compilation avec Code Blocks

Fermé
Antology Messages postés 14 Date d'inscription lundi 25 mai 2009 Statut Membre Dernière intervention 10 octobre 2010 - 3 sept. 2010 à 20:04
Antology Messages postés 14 Date d'inscription lundi 25 mai 2009 Statut Membre Dernière intervention 10 octobre 2010 - 4 sept. 2010 à 11:25
Bonjour,

Je débute en C, et utilise comme programme Code Blocks 8.02.

J'apprends avec un livre dans lequel je dois saisir, compiler, puis exécuter le programme suivant :

/* ex2-5.c */
#include <stdio.h>

int main()
{
char buffer[256];

printf("Entrez votre nom et appuyez sur Entrée:\n");
lire_clavier(buffer, sizeof(buffer));

printf("\nVotre nom contient %d caractères.", strlen(buffer));

exit(EXIT_SUCCESS);
}

------------------

Sachant que ce programme compte puis affiche le nombre de caractères et d'espaces que l'on saisit au clavier.

Le message d'erreur que je reçois est le suivant :

D:\MonEspace\Documents\JV - Informatique\Programmation\Exercices programmation C\ex2-5.c\main.c||In function 'main':|
D:\MonEspace\Documents\JV - Informatique\Programmation\Exercices programmation C\ex2-5.c\main.c|9|warning: implicit declaration of function 'lire_clavier'|
D:\MonEspace\Documents\JV - Informatique\Programmation\Exercices programmation C\ex2-5.c\main.c|11|warning: implicit declaration of function 'strlen'|
D:\MonEspace\Documents\JV - Informatique\Programmation\Exercices programmation C\ex2-5.c\main.c|13|warning: implicit declaration of function 'exit'|
D:\MonEspace\Documents\JV - Informatique\Programmation\Exercices programmation C\ex2-5.c\main.c|13|error: 'EXIT_SUCCESS' undeclared (first use in this function)|
D:\MonEspace\Documents\JV - Informatique\Programmation\Exercices programmation C\ex2-5.c\main.c|13|error: (Each undeclared identifier is reported only once|
D:\MonEspace\Documents\JV - Informatique\Programmation\Exercices programmation C\ex2-5.c\main.c|13|error: for each function it appears in.)|
||=== Build finished: 3 errors, 3 warnings ===|


Quelqu'un pourrait-il m'aider ? (Je rappelle que je suis débutant).
Merci.

A voir également:

5 réponses

ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 339
4 sept. 2010 à 00:55
Essaie d'inclure aussi stdlib.h ...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
4 sept. 2010 à 00:58
Bonjour,
Le compilateur te précise qu'il ne connait pas la fonction fonction lire_clavier. Elle est définie où ?
C'est dommage d'utiliser exit() au lieu de return dans ce cas. Cela t'oblige à inclure stdlib.h
Tu utilises aussi la fonction strlen, il faut donc penser à inclure string.h

Cdlt,
0
Antology Messages postés 14 Date d'inscription lundi 25 mai 2009 Statut Membre Dernière intervention 10 octobre 2010 8
4 sept. 2010 à 11:01
Bonjour,

Tout d'abord je vous remercie pour vos 2 réponses.

J'ai appliqué vos conseils et voici maintenant le code source :

/* ex2-5.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char buffer[256];

printf("Entrez votre nom et appuyez sur Entrée:\n");
lire_clavier(buffer, sizeof(buffer));

printf("\nVotre nom contient %d caractères.", strlen(buffer));

exit(EXIT_SUCCESS);
}

------------------------

Le message d'erreur est devenu :

||=== ex2-5.c, Debug ===|
D:\MonEspace\Documents\JV - Informatique\Programmation\Exercices programmation C\ex2-5.c\main.c||In function 'main':|
D:\MonEspace\Documents\JV - Informatique\Programmation\Exercices programmation C\ex2-5.c\main.c|11|warning: implicit declaration of function 'lire_clavier'|
obj\Debug\main.o||In function 'main':|
D:\MonEspace\Documents\JV - Informatique\Programmation\Exercices programmation C\ex2-5.c\main.c|11|undefined reference to '_lire_clavier'|
||=== Build finished: 1 errors, 1 warnings ===|

Encore un peu d'aide svp ?

Je voudrais dire aussi que j'ai recopié exactement ce qui est écrit dans le livre. Comment se fait-il qu'il ait oublié d'inclure stdlib.h et string.h ?
Et qu'est-ce que leur insertion permet de faire de plus au programme ?
Et qu'en est-il de la fonction lire_clavier qui n'est pas définie ?

Je trouve ça gros qu'il y ait autant d'erreurs et d'oublis dans un livre d'apprentissage du C.

Merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
4 sept. 2010 à 11:10
Eh oui, le C n'est pas maitrisé non plus par les rédacteurs de livre ^^.
int main()
Le prototype de main sans argument est : int main(void)

exit(EXIT_SUCCESS);
C'est très laid dans la fonction main. On utilise généralement : return EXIT_SUCCESS; ou tout simplement return 0;

printf("\nVotre nom contient %d caractères.", strlen(buffer));
C'est mieux de mettre un \n après le "%d caractères." avant de quitter le programme. Rien ne stipule dans la norme que le flush écran doit avoir lieu avant de quitter le programme.

Sinon t'as pas fait tout ce que je t'ai dit.

Le compilateur te précise qu'il ne connait pas la fonction fonction lire_clavier. Elle est définie où ?
Si tu préfères, la fonction "lire_clavier" n'est pas une fonction reconnue en C. Il faut la créer. Tant que c'est pas le cas, ça marchera pas...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Antology Messages postés 14 Date d'inscription lundi 25 mai 2009 Statut Membre Dernière intervention 10 octobre 2010 8
4 sept. 2010 à 11:25
Merci de continuer à m'aider fiddy.

Mais je suis débutant. Pour l'instant, ce que tu me dis est du charabia.

Quelle différence entre int main() et int main (void) ?
Quelle différence entre exit(EXIT_SUCCESS); et return EXIT_SUCCESS; ou return 0; ?
En quoi est-ce mieux de mettre \n après le %d caractères ?
Que signifie "Rien ne stipule dans la norme que le flush écran doit avoir lieu avant de quitter le programme." ?
Et pour finir, si la fonction lire_clavier n'est pas crée, et bien je ne sais pas comment le faire.

Merci.

PS:(c'est un test)
sdfdgsgsdg
0