Merci à toi![]()
Compile pas.Envoyé par Deejoh
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 ../main.c:3: warning: function declaration isn't a prototype ../main.c: In function `creation': ../main.c:16: error: implicit declaration of function `system' ../main.c:16: warning: nested extern declaration of `system' ../main.c:17: error: implicit declaration of function `printf' ../main.c:17: warning: nested extern declaration of `printf' <internal>:0: warning: redundant redeclaration of 'printf' ../main.c:20: error: implicit declaration of function `scanf' ../main.c:20: warning: nested extern declaration of `scanf' <internal>:0: warning: redundant redeclaration of 'scanf' ../main.c:20: error: `nomfich' undeclared (first use in this function) ../main.c:20: error: (Each undeclared identifier is reported only once ../main.c:20: error: for each function it appears in.) ../main.c:27: error: implicit declaration of function `InitFichier' ../main.c:27: warning: nested extern declaration of `InitFichier' ../main.c:29: error: `FILE' undeclared (first use in this function) ../main.c:29: error: `Repertoire' undeclared (first use in this function) ../main.c:31: error: implicit declaration of function `fopen' ../main.c:31: warning: nested extern declaration of `fopen' ../main.c:37: error: `eleve' undeclared (first use in this function) ../main.c:43: error: implicit declaration of function `fseek' ../main.c:43: warning: nested extern declaration of `fseek' ../main.c:43: error: `elev' undeclared (first use in this function) ../main.c:43: error: `SEEK_SET' undeclared (first use in this function) ../main.c:48: error: implicit declaration of function `fread' ../main.c:48: warning: nested extern declaration of `fread' ../main.c:54: error: `true' undeclared (first use in this function) ../main.c:63: error: `false' undeclared (first use in this function) ../main.c:82: error: implicit declaration of function `fwrite' ../main.c:82: warning: nested extern declaration of `fwrite' <internal>:0: warning: redundant redeclaration of 'fwrite' ../main.c:88: error: implicit declaration of function `fclose' ../main.c:88: warning: nested extern declaration of `fclose' ../main.c:100: error: implicit declaration of function `getch' ../main.c:100: warning: nested extern declaration of `getch' ../main.c:110: warning: nested extern declaration of `getch' ../main.c:100: warning: redundant redeclaration of 'getch' ../main.c:100: warning: previous implicit declaration of 'getch' was here ../main.c:114: warning: nested extern declaration of `fclose' ../main.c:88: warning: redundant redeclaration of 'fclose' ../main.c:88: warning: previous implicit declaration of 'fclose' was here ../main.c:76: warning: statement with no effect make.exe: *** [obj/main.o] Error 1
ce que j'ai donné du programme est une fonction il n'est pas complet si tu veux je te l'envoie en mp
en C99, oui. Inclure <stdbool.h>Envoyé par Jack_serious
C'est techniquement possible en C? mais c'est fortement déconseillé.Envoyé par la drogue c'est mal
Interdit en C++.
En C90, oui. En C99, c'est où on veut, bien que je ne recommande pas cette pratique...Envoyé par Jack_serious
Il existe en C99. C'est un alias du type interne _Bool lorsque l'on inclue <stdbool.h>.Envoyé par Jack_serious
On peut faireEn C tu peux "creer" le type booleen avec une super ruse de derriere les fagots, en faisant
Mais le type bool n'existera toujours pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 #define TRUE 1 #define FALSE 0
Mais ça ne sert à rien. Le type bool ne sert à rien. Une expression renvoie 0 ou 1. C'est tout ce qui compte. Ensuite, on teste avec if (f) ou if (!f) etc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part typedef enum {false, true} bool;
je comprend bien mais dans mon problème que j'utilise un booléen ou un entier la détection du numéro utilisé ou non ne se fait pas ...
Salut
Très mauvais code, SEEK_SET te place au début du fichier, il faut utiliser SEEK_CUR, de toute façon puisque tu as un numéro d'élèves, tu peux peut-être calculer l'emplacement de l'élève dans le fichier à partir de son numéro, ce sera plus correct.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 //recule au début de l'enregistrement puisqu'on la lu auparavent fseek(Repertoire,-sizeof(elev),SEEK_SET);
Une petite question, le prof vous a-t-il prévenu des problèmes de scanf ou pas ?
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
seek_cur va me placer au début du bloc en cours c'est ça ?
avec SEEK_CUR, le déplacement est calculé à partir de la position courante dans le fichier, donc effectivement si tu viens de lire un enregistrement, tu retourne à la position avant lecture, mais je le répète, je ne suis pas fan de ses déplacements relatifs, je préfère calculer un déplacement absolu, c'est à mon avis plus sûr.
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Merci pour <stdbool.h>. Je n'etais pas au courant.Envoyé par Emmanuel Delahaye
Par contre, je trouve que le fait d'ecrire des FALSE et des TRUE dans du code le rend plus lisible. Ca permet d'identifier les flags de maniere instantanee. Mais c'est purement esthetique, j'en convient.
C'est pour une question de reprenabilite du code (quel joli mot...pas la peine de le chercher dans un dico).
Il est bien plus important de bien nommer les variables en général et les flags en particulier:Envoyé par Jack_serious
En quoi ce code serait plus lisible avec des true et des false ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int end = 0; while (! end) { int c = getchar() end = c == '\n'; }
En effet, ici ça sert à peu de chose.
Pas contre, c'est là que la notation hongroise peut aider:
le préfixe "b" pour booléen, c'est très utile pour voir pourquoi le programmeur teste seulement si la variable est différente de zéro. Ce genre de convention facilite le passage de code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int bEnd = 0; while (! bEnd) { int c = getchar(); bEnd = c == '\n'; }
Mais bien sûr, il ne faut pas en abuser, comme Microsoft et ses "lpsz" pour des chaînes...
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.
Bien sur qu'il faut donner des nom parlant a ses variables. C'est le plus important.Envoyé par Emmanuel Delahaye
Mais rien ne t'empeche de mettre du lait ET du sucre dans ton cafe.
Apres bien sur on a tous nos habitudes de codages.
J'aime bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ended = FALSE; while (!ended) { c = getchar(); ended = c == '\n'; }
Enfin bref... J'ai l'impression qu'on ne va pas aller tres loin dans cette voie.
Marche pas. On ne connait pas la valeur de FALSE, donc pour être indépendant, on doit écrire (ok pour l'adjectif)Envoyé par Jack_serious
Ce qui devient lourd...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ended = FALSE; while (ended == FALSE) { c = getchar(); ended = c == '\n'; }
Mouais... c'est bien ce que je disais... on pourrais en parler pendant des heures sans arriver a grand chose.
Mon ecriture manquait peut etre un peu de coherence, je veux bien l'admettre.
Mais ca reste quand meme comprehensible il me semble.
Exact, j'ai oublie le #define... Mais au vu des posts precedents, ca me semblait evident.Envoyé par Emmanuel Delahaye
Ton ecriture est sans conteste plus rigoureuse et uniforme.
Mais je soutiens que la mienne est lisible.
Et puis je soutiens aussi qu'on a surement des choses plus interessantes a faire que de debattre d'un sujet aussi steril.
Note: ceci dit la maniere de coder en general, pour faire un code lisible, coherent, clair et propre est un sujet qui me tient beaucoup a coeur. Je prend en compte tes remarques pour la suite.
Partager