# Je me mets au C

**URL:** <https://www.debian-fr.org/t/je-me-mets-au-c/8416>\
**Category:** Pause Café\
**Created:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416 "2016-02-20T16:06:38Z")\
**Posts on this page:** 20\
**Page:** 5

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/81 "2016-02-20T16:06:54Z")

</div>

il te manque en tête de fichier la declaration d’utilisation de la bibliothèque qui contient printf, stdio.h (je crois, sinon, tu fais man printf, et tu sauras).  
La ligne à rajouter au début est donc:

`#include <stdio.h>` (avec \<\> parceque c’est une lib standard, et pas un truc qui est dans le répertoire ou tu compiles.  
Et mets toi dans le rep de gnutoto et fais juste make gnutoto, tu verras que c’est plus rapide à taper que ta ligne de gcc.

---

<div class="post-metadata">

**Author:** ![wavesound](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/54ee81/32.png) [@wavesound](https://www.debian-fr.org/u/wavesound)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/82 "2016-02-20T16:06:55Z")

</div>

D’accord merci ! 🙂

Mais pourtant même avec cette erreur j’arrive à lancer l’exécutable.

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/83 "2016-02-20T16:06:55Z")

</div>

oui, mais il ne fait rien, si ?  
ou alors, tu as un autre gnutoto dans ton path. Que donne which gnutoto ?

---

<div class="post-metadata">

**Author:** ![wavesound](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/54ee81/32.png) [@wavesound](https://www.debian-fr.org/u/wavesound)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/84 "2016-02-20T16:06:55Z")

</div>

wich gnutoto ne donne rien, je reviens à la ligne et ça me redonne la main.

Sinon, j’ai un peu avancé, mais j’ai une erreur de segmentation. Voici mon code :

[code]#include \<stdio.h\>

int main(int argc, char \*argv[])  
{  
long age = 0, niveau = 4;

printf(“Quel est votre âge ?”);  
scanf("%ld", &age);  
printf(“Vous avez donc %ld ans !%n%n”, age);

return 0;  
}[/code]  
Et voici le résultat après compilation :

`wavesound@Whale:~/Fichiers temporaires$ /home/wavesound/Fichiers\ temporaires/gnutoto
Quel est votre âge ?14
Erreur de segmentation
wavesound@Whale:~/Fichiers temporaires$ 
`

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/85 "2016-02-20T16:06:55Z")

</div>

enlèves les deux %n et remplaces les par des \n. 😉

---

<div class="post-metadata">

**Author:** ![wavesound](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/54ee81/32.png) [@wavesound](https://www.debian-fr.org/u/wavesound)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/86 "2016-02-20T16:06:55Z")

</div>

Suis-je bête ! Hé bin, c’est drôlement précis tout ça !

[code]wavesound@Whale:~$ /home/wavesound/Fichiers\ temporaires/gnutoto  
Quel est votre âge ?14  
Vous avez donc 14 ans !

wavesound@Whale:~$  
[/code]  
Bon, je vais essayez d’intégrer un saut à la ligne pour donner mon âge, comme ça c’est moche.

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/87 "2016-02-20T16:06:55Z")

</div>

Et oui, ça pardonne pas…

---

<div class="post-metadata">

**Author:** ![wavesound](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/54ee81/32.png) [@wavesound](https://www.debian-fr.org/u/wavesound)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/88 "2016-02-20T16:06:55Z")

</div>

Yahoo, c’est impeccable ! 😃

`wavesound@Whale:~$ /home/wavesound/Fichiers\ temporaires/gnutoto
Quel est votre âge ?
14
Vous avez donc 14 ans !
wavesound@Whale:~$ 
`

[code]#include \<stdio.h\>

int main(int argc, char \*argv[])  
{  
long age = 0;

printf(“Quel est votre âge ?\n”);  
scanf("%ld", &age);  
printf(“Vous avez donc %ld ans !\n”, age);

return 0;  
}[/code]  
Et voila mon premier programme/script, que j’appelle gnuage, sous licence GPL (de toute façon on aurait pas de mal à trouver mon code si je l’aurai rendu propriétaire 😆).

---

<div class="post-metadata">

**Author:** ![wavesound](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/54ee81/32.png) [@wavesound](https://www.debian-fr.org/u/wavesound)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/89 "2016-02-20T16:06:55Z")

</div>

A propos, comment faire un portage de mon programme en .exe (ou .bat), pour Windows afin qu’il s’éxecute (bien-sûr 😆) en ligne de commandes ?

---

<div class="post-metadata">

**Author:** ![Yoko](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/y/58956e/32.png) [@Yoko](https://www.debian-fr.org/u/Yoko)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/90 "2016-02-20T16:06:55Z")

</div>

> [@](#):
>
> A propos, comment faire un portage de mon programme en .exe (ou .bat), pour Windows afin qu’il s’éxecute (bien-sûr 😆) en ligne de commandes ?

Tu utilise que des fonctions standards du C, donc il te suffit de recompiler ton programme sous Windows.

---

<div class="post-metadata">

**Author:** ![wavesound](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/54ee81/32.png) [@wavesound](https://www.debian-fr.org/u/wavesound)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/91 "2016-02-20T16:06:55Z")

</div>

Je n’ai pas Windows. 😒

Il n’y a pas un compilateur libre pour Windows quelque part ? ![8)](https://www.debian-fr.org/uploads/default/original/1X/ae031e9834d19166598edd060b063d44f1829139.gif "Cool")

---

<div class="post-metadata">

**Author:** ![Yoko](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/y/58956e/32.png) [@Yoko](https://www.debian-fr.org/u/Yoko)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/92 "2016-02-20T16:06:56Z")

</div>

Je ne crois pas qu’on puisse compiler pour windows ailleurs que sur un windows, c’est d’ailleur identique pour linux ou bsd, ça n’a pas de rapport avec la licence du compilateur (gcc est porté sous windows).

Tu peut peut être te débrouiller avec wine en installant un compilateur avec est en compilant avec lui.

---

<div class="post-metadata">

**Author:** ![wavesound](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/54ee81/32.png) [@wavesound](https://www.debian-fr.org/u/wavesound)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/93 "2016-02-20T16:06:56Z")

</div>

[code]#include \<stdio.h\>

int main(int argc, char \*argv[])  
{  
long resultat = 0, nombre1 = 0, nombre 2 = 0;

resultat = 5 + 3;  
printf(“Entrez le premier nombre :\n”);  
scanf ("%ld", &nombre);  
printf(“Entrez le deuxième nombre :\n”);  
scanf ("%ld", &nombre);

resultat = nombre1 + nombre2;

printf (“ld + ld = ld\n”, nombre1, nombre2, resultat;

return 0;  
}[/code]  
Quelqu’un verrait t-il une erreur la-dedans ? La compilation pose problème :

`/home/wavesound/Fichiers temporaires/toto.c: In function ‘main’:
/home/wavesound/Fichiers temporaires/toto.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘ __attribute__ ’ before numeric constant
/home/wavesound/Fichiers temporaires/toto.c:8: error: missing terminating " character
/home/wavesound/Fichiers temporaires/toto.c:9: error: ‘nombre’ undeclared (first use in this function)
/home/wavesound/Fichiers temporaires/toto.c:9: error: (Each undeclared identifier is reported only once
/home/wavesound/Fichiers temporaires/toto.c:9: error: for each function it appears in.)
/home/wavesound/Fichiers temporaires/toto.c:9: error: expected ‘)’ before ‘;’ token
/home/wavesound/Fichiers temporaires/toto.c:18: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
/home/wavesound/Fichiers temporaires/toto.c:18: error: expected declaration or statement at end of input`  
Ouch !

Edit : C’est en partie débuggué. J’avais laissé un espace à “nombre 2” au début de mon code, et puis on avait “&nombre” au lieu de “&nombre1” et “&nombre2”.  
Mais malheureusement j’ai encore des erreurs pendant la compilation…

Décidément !

---

<div class="post-metadata">

**Author:** ![Yoko](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/y/58956e/32.png) [@Yoko](https://www.debian-fr.org/u/Yoko)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/94 "2016-02-20T16:06:56Z")

</div>

Manque une parenthèse au dernier printf.

À quoi t eservent les deux premières ligne de la fonction main ? Je comprends bien les déclarations (bien qu’en long soit discutable), mais vois pas à quoi servent les initialisations.

---

<div class="post-metadata">

**Author:** ![wavesound](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/54ee81/32.png) [@wavesound](https://www.debian-fr.org/u/wavesound)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/95 "2016-02-20T16:06:56Z")

</div>

J’avance, il me reste quelques erreurs à déboguer.

[code]#include \<stdio.h\>

int main(int argc, char \*argv[])  
{  
long resultat = 0, nombre1 = 0, nombre2 = 0;

printf(“Entrez le premier nombre :\n”);  
scanf("%ld", &nombre1);  
printf(“Entrez le deuxième nombre :\n”);  
scanf("%ld", &nombre2);

resultat = nombre1 + nombre2;

printf("%ld + %ld = %ld\n", nombre1, nombre2, resultat);

return 0;  
}[/code]

`/home/wavesound/Fichiers temporaires/toto.c: In function ‘main’:
/home/wavesound/Fichiers temporaires/toto.c:7: error: missing terminating " character
/home/wavesound/Fichiers temporaires/toto.c:8: error: expected ‘)’ before ‘;’ token
/home/wavesound/Fichiers temporaires/toto.c:17: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
/home/wavesound/Fichiers temporaires/toto.c:17: error: expected ‘;’ before ‘}’ token
`  
Tout me semble bon, pourtant.

---

<div class="post-metadata">

**Author:** ![Yoko](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/y/58956e/32.png) [@Yoko](https://www.debian-fr.org/u/Yoko)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/96 "2016-02-20T16:06:57Z")

</div>

Tu as un \ en trop dans le premier printf

---

<div class="post-metadata">

**Author:** ![wavesound](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/54ee81/32.png) [@wavesound](https://www.debian-fr.org/u/wavesound)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/97 "2016-02-20T16:06:57Z")

</div>

Ah, merci pour ça, je ne l’avais pas vu.

Mais j’avais rentré mon premier code, qui lui était bon, et non le deuxième.

C’est édité, si tu peux y jeter un oeil. 🙂

---

<div class="post-metadata">

**Author:** ![wavesound](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/54ee81/32.png) [@wavesound](https://www.debian-fr.org/u/wavesound)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/98 "2016-02-20T16:06:57Z")

</div>

> [@](#):
>
> Tu as un \ en trop dans le premier printf

Merci, c’était ça !  
Par contre, en rajoutant le & dans mon premier code a fait foirer mon âge : j’avais - plusieurs milliards d’années ! 😆

Je ne voulais pas que printf me donne l’adresse mémoire (c’est bien comme ça qu’on dit ?) voila pourquoi le & est utile dans le scanf qui le requiert, mais pas dans le printf qui doit afficher mon âge.

---

<div class="post-metadata">

**Author:** ![Anoyzthen](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@Anoyzthen](https://www.debian-fr.org/u/Anoyzthen)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/99 "2016-02-20T16:06:58Z")

</div>

alors là… j’avoue que si tu adores le printf comparé au print de python…  
bah vas y fonce sur le C, et oublie pas le C++ après, tu devrais adorer.

et les pointeurs c’est que du bonheur.

les deux images de matt sont pas mal à mon gout. surtout la laisse du chien.

mais Matt, t’as pas parlé de quand on se trimballe avec la laisse, sans le chien qui va avec, par cequ’on a oublié de l’accrocher, et qu’au beau milieu de la rue on dit à son chien ’ qu’il est gentil le gentil toutou ! ! ! ’

bah on passe pour un cinglé, et là le programme il plante direct sans rien prevenir. c’est un peu le danger de se prommener avec une laisse vide.

---

<div class="post-metadata">

**Author:** ![wavesound](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/54ee81/32.png) [@wavesound](https://www.debian-fr.org/u/wavesound)\
**Post date:** [Février 20, 2016, 4:06 UTC](https://www.debian-fr.org/t/je-me-mets-au-c/8416/100 "2016-02-20T16:06:58Z")

</div>

Voila les deux seuls programmes “pas inutiles” que j’ai écrit pour le moment.

gnuplus-1.0

GNU GPL (General Public License) 2.0  
Ce programme n’est disponible pour le moment qu’en français.  
Il a été codé en C le 05/07/07.  
\*/

#include \<stdio.h\>

int main(int argc, char \*argv[])  
{  
long resultat = 0, nombre1 = 0, nombre2 = 0;  
U GPL (General Public License) 2.0\n\nEntrez le premier nombre :\n");  
scanf("%ld", &nombre1);  
printf(“Entrez le deuxième nombre :\n”);  
scanf("%ld", &nombre2);

resultat = nombre1 + nombre2;

printf("%ld + %ld = %ld\n", nombre1, nombre2, resultat);

return 0;  
}[/code]

gnuminus-1.0

[code]/\*gnuminus-1.0

GNU GPL (General Public License) 2.0  
Ce programme n’est disponible pour le moment qu’en français.  
Il a été codé en C le 05/07/07.  
\*/

#include \<stdio.h\>

int main(int argc, char \*argv[])  
{  
long resultat = 0, nombre1 = 0, nombre2 = 0;

printf(“g(General Public License) 2.0\n\nEntrez le premier nombre :\n”);  
scanf("%ld", &nombre1);  
printf(“Entrez le deuxième nombre :\n”);  
scanf("%ld", &nombre2);

resultat = nombre1 - nombre2;

printf("%ld - %ld = %ld\n", nombre1, nombre2, resultat);

return 0;  
}[/code]

gnuminus est un peu calqué sur gnuplus mais bon ! 😆

J’en apprends un peu + puis je tenterai un gnumultiplicator et un gnudivisor !

Vous avez des idées de programmes que je peux créer, et qui seraient un peu utiles ?

[Page précédente](https://www.debian-fr.org/t/je-me-mets-au-c/8416.md?page=4)

[Page suivante](https://www.debian-fr.org/t/je-me-mets-au-c/8416.md?page=6)
