Problème language C

Fermé
abnormal - 4 nov. 2009 à 23:37
Dora The Explorer Messages postés 2811 Date d'inscription mardi 4 septembre 2007 Statut Contributeur Dernière intervention 1 septembre 2011 - 5 nov. 2009 à 00:30
Bonjour,
J'ai un problème avec ma programmation C, je suis un tout nouveau débutant alors soyez indulgents et aidez moi svp alors voilà mon IDE me dit que j'ai une erreur : error: syntax error before "printf"

1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main() // ce qui signifie int main(int argc,char *argv[])
5 {
6 printf("Hello world!\n"); // instruction finie tjrs par ; printf est une fonction permet d'afficher du texte à l'écran
7 int nombre_De_Lifes = 3
8 //variable a une valeur de 3 valeur obtenue depuis le départ
9 printf("Vous avez %d de vies\n", nombre_De_Lifes);
10 printf("*Bang*\n");
11 nombre_De_Lifes = 2; // On vient de perdre une valeur de NDF donc nombre_De_Lifes = 2 donc on vient de perdre une " vie".
12 printf("Il ne vous reste que 3 Points de Vies! faites plus attention la prochaine fois!\n\n\n");
13
14 return 0;
15 //fin de fonction
}
Aidez moi svp dites moi où est le problème sachant que mon IDE CODE::BLOCKS m'indique une erreur se trouvant dans la ligne 9.
Merci

4 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
4 nov. 2009 à 23:38
oublié un point virgule à la ligne d'avant ;)
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
4 nov. 2009 à 23:42
pour que tu comprennes pourquoi ton compilateur dit ça :

en fait on peut coder en théorie sur plusieurs lignes. les séparateurs d'instructions sont en général les points virgules et les accolades. Pour le compilateur, que tu tapes "entrée" ou non ne change pas grand chose pour lui. Lui, il veut voir des points virgules. ainsi il comprend que c'est une autre instruction.

Ton compilateur a donc vu ça :
int nombre_De_Lifes = 3 printf("Vous avez %d de vies\n", nombre_De_Lifes); 


c'est pourquoi il te dit qu'il comprend bien que tu appelles la fonction printf(), mais il ne comprend pas pourquoi tu écris "3" avant -> Erreur de syntaxe. appeler une fonction et écrire un nombre avant ne veut rien dire pour le langage C.
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
5 nov. 2009 à 00:04
et, puisque tu est en train d'apprendre le début de la prog, j'aimerais bien commenter cette ligne :

nombre_De_Lifes = 2; // On vient de perdre une valeur de NDF donc nombre_De_Lifes = 2

bien évidemment, je suppose que c'est un de tes tous premiers programmes, donc pas de problème si c'est pas bien fait. Mais je pense que c'est l'exemple idéal pour te montrer une bonne pratique de programmation :

Imagine tu veux changer ton code. Tu ne veux plus que le nombre de vie de départ soit trois, mais cinq par exemple. (ou mieux : tu réussis à faire en sorte qu'on puisse choisir ou même changer le nombre de vie au cours de la partie).

A ce moment là, il faudrait aussi changer la ligne que j'ai copiée.

Or, lorsqu'un programme devient un peu gros, il est quasi certain que tu vas l'oublier. Ceci est une mauvaise pratique car tu es obligé de faire de nombreux changement, et cela te conduirais à un bug (par exemple ici après le bang le nombre de vie se retrouve à 2 au lieu de descendre de un).

Une bonne chose à faire serait ceci :
nombre_De_Lifes = nombre_De_Lifes - 1; // On vient de perdre une valeur de NDL

Ainsi ton code est mieux conçu, correspond parfaitement à ce que tu veux faire et est plus clair (pas besoin de justifier pourquoi tu mets la variable à 2). Ceci est un exemple de bonne pratiques pour éviter les bugs ;)

j'espère que tu auras compris ce que je voulais dire

Très bonne suite à toi dans la prog!
0
Dora The Explorer Messages postés 2811 Date d'inscription mardi 4 septembre 2007 Statut Contributeur Dernière intervention 1 septembre 2011 853
5 nov. 2009 à 00:30
Et puis si je peux me permettre, le pluriel de life, c'est lives. C'est pour ça que la compilation échouait ;)

i = i - 1;

(i étant un nom de variable) peut aussi s'écrire, en raccourci:
i--;


Sinon, un petit conseil en plus de ceux de Paco:
dès que tu as une erreur, repère le numéro de ligne et scanne avec tes yeux. Même sans réfléchir, tu y trouveras des erreurs. Souvent bêtes d'ailleurs, on oublie des signes... Et si la syntaxe n'est pas respectée, c'est le drame. Je dis ça, parce que ça va encore t'arriver souvent, et que du coup tu risques souvent de devoir passer sur les forums :P

Bon, je retourne étudier aussi.
0