-
Lecture sur stdin
Bonjour tout le monde.
Voilà je suis tout jeune débutant en langage C et j'essaie de faire divers exercices que je trouve sur le net.
Et il en est un que je ne comprend pas.
On y demande de réaliser une fonction qui renvoie le maximum d'une liste d'entier positif entrée sur stdin et terminé par 0.
Je ne comprend pas comment lire sur stdin afin de faire des comparaisons pour trouver le maximum.
Merci d'avance.
Amicalement Boobs60
-
Bonjour,
D'abord, tu utilises fgets() sur stdin pour lire une ligne. Tu stockes cette ligne dans un buffer déclaré au préalable (toujours le même buffer pour chaque ligne).
Ensuite, tu convertis le nombre, écrit en caractères dans ta chaîne, en un entier numérique long int avec strtol(). Tu stockes cet entier dans un tableau de long int lui aussi déclaré au préalable.
Enfin, tu travailles sur les éléments de ton tableau, en les comparant directement avec les opérateurs « < », « > » et « = ».
-
ok donc il faut quand même que j'utilise un tableau je pensais qu'on en avais pas besoin, que je pouvais lire les nombre un par un comme dans un tableau directement dans stdin.
En ce qui concerne la ligne, lorsque je vais entrer mes entiers, cela va me créer une seul ligne ou bien une ligne pour chaque entiers ?
Car si il n'y a qu'un seul ligne je devrais alors la découper de façons à retrouver tout mes entiers et de pouvoir les comparer.
Merci.
Amicalement Boobs60
-
Mea culpa, j'ai lu trop vite. J'ai cru qu'il s'agissait de trier des entiers. S'il s'agit de retourner le maximum, tu peux effectivement n'utiliser qu'une seule variable, que tu mets à jour si le nombre que tu lis est plus grand que celui qu'elle contient.
Tu peux également passer plusieurs nombres sur la même ligne si c'est ainsi que tu veux procéder. Le second argument de strtol() sert à indiquer à quelle position de la chaîne on en est. Tu peux aussi utiliser directement scanf(), ce qui est probablement ce à quoi s'attend l'auteur de l'exercice.