ah la bonne blague, getch() n'existe pas haha encore un coup de devcpp utiliser C::B sinon apperemment devcpp ne reconnait pas le int main(void) il préfère le int main()
ah la bonne blague, getch() n'existe pas haha encore un coup de devcpp utiliser C::B sinon apperemment devcpp ne reconnait pas le int main(void) il préfère le int main()
Ca ne s'arrange pas... C'est quoi ce getch() ? Tu ne peux pas mettre getchar() tranquillement ?Envoyé par _SamSoft_
Non. Je compile sous Code::Blocks et il est correctement réglé.Envoyé par _SamSoft_
http://emmanuel-delahaye.developpez....tm#cfg_compilo
Je ne vois d'ailleurs pas pourquoi tu t'obstines à mettre une pause à la fin de ton code, puisque les IDE corrects (comme C::B ou VC++) en mettent une automatiquement...
Il faut apprendre à interpréter les erreurs et avertissements correctement."nbr" unizial... je sais pas ce que c'est ?
Ca veut dire que la variable 'nbr' est utilisée (lue) avant d'avoir été initialisée. Le comportement est donc indéfini. C'est un bug grave.
Code : Sélectionner tout - Visualiser dans une fenêtre à part main.c:6: warning: 'nbr' might be used uninitialized in this function
Attention quand même à ne pas trop le brusquer. Ce jeune homme pratique le langage C depuis plus d'un an. Encore 2 semaines et il sera un gourou...Envoyé par Emmanuel Delahaye
![]()
Bah, continue à faire le kéké si ça t'amuse, mais getch(), c'est pas du C standard. C'est du Borland C repris par MinGW...Envoyé par _SamSoft_
http://conio.sourceforge.net/docs/conio.pdf
Qu'est-ce qui te fait dire ça ? Tu peux justifier ?sinon apperemment devcpp ne reconnait pas le int main(void) il préfère le int main()
LolAttention quand même à ne pas trop le brusquer. Ce jeune homme pratique le langage C depuis plus d'un an. Encore 2 semaines et il sera un gourou...
Sinon emmanuel, vous avez des manières de vous adresser aux gens, surtout à ceux qui font des erreurs, je crois bien que vous êtes le seul !
J'ai mis une pause car tout le monde n'a pas c::b ou vc++
getch, chez moi fonctionne, si vous voulez getchar, allez y, sous devcpp void main(void) ou encore void main() ne fonctionne pas donc j'ai crée mon code de telle facon à ceux que tout le monde puisse l'executer
pour :
Vous m'avez précisé que
Code : Sélectionner tout - Visualiser dans une fenêtre à part main.c:6: warning: 'nbr' might be used uninitialized in this functionPourtant je ne vois pas où mon code lit la variable avant de l'avoir créer, je reprécise que chez moi ce code fonctionne !Ca veut dire que la variable 'nbr' est utilisée (lue) avant d'avoir été initialisée. Le comportement est donc indéfini. C'est un bug grave.
Sinon pour le code de crocodilex, il est simple plus rapide que le mienes et donc plus performant mais il n'est pas bon d'apprendre à un débutant de créer des programmes dans un "langage commun" car en C on apprend à mettre des accolades, à créer des séparations, ce code (le votre) aurait été mieux danbs une dll car il aurait pu être utiliser par de nombreux langages (en faisant de petites modifs) , voilà
![]()
Le C standard ne connait pas de fonction getch(). Par ailleurs, ton programme ne réponds toujours pas à la demande de l'auteur de cette discussion. On ne s'intéresse pas ici à afficher ",coucou1, coucou2, coucou3", sur stdout, mais à réaliser la concaténation de la chaine de caractères "coucou" avec les entiers 1, 2, 3, etc. Pour ce faire, comme mentionné plus haut, on n'utilise pas la fonction printf(), mais sprintf() ou snprintf() (ATTENTION: C99).Envoyé par _SamSoft_
Par ailleurs, en ce qui concerne ton programme, tu te compliques inutilement la vie en utilsant deux compteurs pour ta boucle. Voici une adaptation de ton code qui donne un exemple d'utilisation de sprintf():
Thierry
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 #include <stdio.h> #include <stdlib.h> #define NB_CHAINES_MAX 20 int main(void) { int err = EXIT_SUCCESS; int i; char coucous[NB_CHAINES_MAX][10] = {{0}}; /* Attention, NB_CHAINES_MAX doit ici être inférieur à 1000 */ if (NB_CHAINES_MAX < 1000) { /* On concatène "coucou" avec un entier et on stocke le résultat dans un tableau de chaines de caractères */ for (i = 0; i < NB_CHAINES_MAX; i++) { sprintf(coucous[i], "%s%i", "coucou", i); } for (i = 0; i < NB_CHAINES_MAX; i++) { puts(coucous[i]); } } else { err = EXIT_FAILURE; } return err; }
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
lol,merci thierry, sinon pour la balise code vous criez (c'est un euphémisme
) qu'il faut l'utiliser mais encore faut il savoir s'en servir n'est ce pas ? lol
, je m'excuse pour le hors sujet de mon code je croyais que c'était ce qu'il voulait sinon où est le créateur du sujet ?
![]()
void main(void) ou void main() ne sont pas des formes acceptées par la norme du langage. main doit retourner un entier de type int (par convention: 0 ou EXIT_SUCCESS en cas d'exécution avec succès). Seules les deux formes suivantes sont valides:Envoyé par _SamSoft_
Par ailleurs, pour utiliser getch() sous win32 avec C:B, il faut inclure l'en-tête adéquate:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int main(void) /* ou */ int main(int argc, char *argv[]) /* ou de manière équivalente: int main(int argc, char **argv) */
Aucune chance donc que ton code compile sans avertissement sous Code:Blocks.
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include <conio2.h>
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
merci pour ces indications maisne fonctionne pas sous devcpp c'est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part int main(void)
je n'ai pas inclu conio est pourtant "elle tourne", non et pourtant ca marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int main() /* ou */ int main(int argc, char *argv[]) /* ou de manière équivalente: int main(int argc, char **argv) */, ca m'a aussi étonné
<HS>Lorsque je m'aperçois que j'ai oublié des balises de CODE (souvent très rapoidement), j'édite mon message et ce n'est pas plus grave que cela .</HS>Envoyé par _SamSoft_
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
int main(void) est parfaitement défini et je ne vois absolument aucune raison que cela ne fonctionne pas avec MinGW (oui, c'est le même compilateur qui est utilisé que ce soit avec Code::Blocks ou avec Dev-CPP). Mais, bon! Le propos de ce post n'est pas de discuter de ce que dit la norme au sujet de main, mais de traîter de l'utilsation de sprintf() pour concaténer une chaîne de caractères et un entier...Envoyé par _SamSoft_
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Surtout quand tu te la pètes en faisant des erreurs basiques au bout d'un an de C... Tu ferais preuve d'un peu plus d'humilité, ça se passerait autrement. Mais visiblement, tu aimes fournir le bâton pour te faire taper dessus, alors, moi, je ne suis pas contrariant, je tape.Envoyé par _SamSoft_
C'est leur problème... On est pas là pour corriger les bugs des IDE obsolètes...J'ai mis une pause car tout le monde n'a pas c::b ou vc++
Tant qu'il a des comportements indéfinis, un code ne fonctionne pas.getch, chez moi fonctionne,
http://emmanuel-delahaye.developpez.com/notes.htm#ub
Le comportement visible ne suffit pas à qualifier un code.
Il faut inclure <conio2.h>, sinon, le comportement est indéfini.
Sur un forum dédié à un langage et donc indépendant de toute implémentation, on privilégie les solutions portables. Ca te choque ? Sinon, on signale que ce n'est pas portable. C'est le minimum de bons sens et de savoir vivre. Ca te choque ?si vous voulez getchar, allez y,
Exact, mais quel rapport ?sous devcpp void main(void) ou encore void main() ne fonctionne pas
Le warning concerne le fait que, bien que main() retourne int, ce qui est normal, tu ne mettes pas de return dans ton code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part main.c:16: warning: control reaches end of non-void function
Visiblement tu ne sais pas de quoi tu parles. Alors au lieu de te la péter et d'inventer n'importe quoi, écoute, apprends et pose gentiment tes questions. Si tu ne comprends l'anglais, je te conseille de t'y mettre sérieusement. Si tu ne comprends pas les messages, demande une explication. Mais cesse d'inventer et de raconter n'importe quoi... L'informatique, c'est sérieux... Il peut y avoir des vies en jeu...
Alors tu ne sais pas ce que tu codes ? Tu ne comprends pas le sens des instructions au bout d'un an de C ? Il serait temps de t'y mettre...Pourtant je ne vois pas où mon code lit la variable avant de l'avoir créer, je reprécise que chez moi ce code fonctionne !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while(boucle != 0) /* lecture de 'boucle' */ { printf(", %s%i", coucou, nbr); /* lecture de 'nbr' */ nbr = nbr + 1; /* lecture de nbr, puis 'ecriture'... */Je crois que j'ai gagné le droit de ressortir une de mes citations :Sinon pour le code de crocodilex, il est simple plus rapide que le mienes et donc plus performant mais il n'est pas bon d'apprendre à un débutant de créer des programmes dans un "langage commun" car en C on apprend à mettre des accolades, à créer des séparations, ce code (le votre) aurait été mieux danbs une dll car il aurait pu être utiliser par de nombreux langages (en faisant de petites modifs) , voilà
![]()
"Arrête de fumer la moquette. Les acariens grillés, ça bousille le cerveau"
Vraiment vous avez entièrement raison emmanuel je ferais mieux de potasser un peu des livres sur le C plutôt que de dire que cela fait un an que je programme en C (ce qui reste vrai) sinon, je connais l'anglais mais l'angalais connais pasl'angalais, de plus votre citation
, m'a donné un mal de ventre fous, en clair j'étais plié en deux sinon je ne comprend pas pourquoi mon code fonctionne parfaitement chez moi ?"Arrête de fumer la moquette. Les acariens grillés, ça bousille le cerveau"![]()
Corrigé avant que je vois ton post...Envoyé par _SamSoft_
Si tu connais l'anglais, je ne comprends pas que tu ais du mal avec les messages du compilateur.
Merci de cette discussion, c'est assez divertissant.
A l'attention de _SamSoft_, Avast détecte les setup de tes programmes comme des virus (ver en l'occurrence).
Pis j'aime bien le programme Rplas, qui fait exactement la meme chose que la fonction Rechercher/Remplacer du plus basique éditeur de texte.![]()
je n'ai pas lu les messages de votre compilo mais simplement le nom exemple "int" ou encore getchar j'ai déduis des choses (fausses peut êtres) mais bon, je m'excuse !
De quoi parlez vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2A l'attention de _SamSoft_, Avast détecte les setup de tes programmes comme des virus
![]()
Ca s'appelle 'tomber en marche'. Etudie la Loi de Murphy, tu vas comprendre...Envoyé par _SamSoft_
Petit résumé :
http://www.snof.org/accueil/murphy.html
Partager