« Exercices en langage C/Notions de base » : différence entre les versions

Contenu supprimé Contenu ajouté
Tavernier (discussion | contributions)
bricole
ortho
Ligne 6 :
* l'appel de fonction
* la bibliothèques standard, l'inclusion avec le préprocesseur
* la sortie formattéeformatée avec <code>printf</code>
* les paramètres de <code>main</code>
 
Ligne 101 :
 
Remarques qualité :
* Lorsque on définit une fonction de la sorte, elle est par défaut '''extern''' (visible de l'extérieur). Dans un projet plus important, elle pourrait donc être appelée à la place d'une autre portant le même nom. Pour limiter sa visibilité en interne, il faudaitfaudrait utiliser le mot clé '''static'''. <code>static int un(void)</code>.
* Que se passe-t-il si l'on définit la fonction <code>un</code> après <code>main</code> ? En compilant <code>main</code>, le compilateur va remarquer que l'on appelle une fonction <code>un</code> dont il ne sait rien. Cela ne l'empêche pas de compiler le programme ! ('''sans l'option -Wall il ne signalera rien !''') Le compilateur fait comme si <code>un</code> avait été déclarée par : <code>extern int un()</code>. Il y a déclaration implicite de fonction, alors que le compilateur ne sait rien de l'implémentation réelle de la fonction ! Par chance, la déclaration explicite correspond au prototype <code>int un(void)</code> et le programme suivant fonctionne. Il vaut mieux éviter ces mécanismes hasardeux, en demandant au compilateur d'être strict et en utilisant l'option '''-Wall'''.
<source lang="c">
Ligne 225 :
Notions :
*paramètres de <code>main</code>
*sortie formattéeformatée
 
{{Boîte déroulante|titre=Solution|contenu =
Pour avoir accès aux arguments en ligne de commande, on utilise la seconde définition standard de <code>main</code>, qui a pour premier paramètre le nombre d'arguments <code>argc</code>, et pour second paramètre le vecteur d'arguments <code>argv</code>. Notons que sur Unix, le nom de l'exécutable lui-même (<code>./arg</code>) est un argument, donc <code>argc</code> vaut au moins 1. Le résultat recherché est <code>argc - 1</code>. Pour afficher un nombre entier, nous utilisons des caractères de conversion dans la chaîne de formattageformatage passée à <code>printf</code>. Le caractère de conversion <code>d</code> suivant le caractère <code>%</code> indique que nous affichons un entier de type <code>int</code>.
 
<source lang="c">