Vous êtes ici sur un forum d'entraide communautaire et non pas sur un forum de demande de service, le but n'est donc pas de fournir une réponse toute faite ou de directement fournir la solution à quiconque viendrait sans la moindre trace. Afin d'obtenir de l'aide et une solution à votre problème, il est fortement recommandé de présenter clairement l'état actuel du problème en nous fournissant :
Un descriptif clair et précis du problème
La tentative actuelle de résolution que vous avez effectué => Le code que vous avez écrit, inséré sur le forum à l'aide du bouton code </>.
Le résultat attendu et le résultat actuel
Toutes pistes de recherches pouvant aider à la résolution
la place dans un tampon qui est agrandi au besoin.
fgets ne déborde pas, mais nous laisse éventuellement à gérer une fin de ligne non consommée, ce qui complique beaucoup la programmation (quand le but est de traiter une ligne)
---
Et getline fait partie du standard Posix (2008), ainsi que des extensions de la bibliothèque C
C Library Part II: Dynamic Allocation Functions, ISO/IEC TR 24731-2:2010,
Je connais getline, c'est juste que je trouve que ce n'est pas approprié à un débutant de chez débutant.
Comme ce n'est pas standard, ce n'est pas forcement fourni avec les bibliothèques qui accompagne les compilateurs. Il va donc falloir que le débutant ailles en chercher une implémentation puis qu'il intègre à son projet, ce qui sera une autre complication pour lui.
rtir du clavier. > On doit definir une structure etudiant ou un etudiant est representé par son nom, son prenom et une note + Comment lit-on une note quand on débute en programmation?
Le Tout est souvent plus grand que la somme de ses parties.
C'est beau l'éloge de la portabilité, mais concrètement, sur quel système le débutant ne trouvera pas getline ?
Windows : MinGW , Visual C .
PierrotLeFou a écrit:
+ Comment lit-on une note quand on débute en programmation?
Je suppose que la note est un entier int ? Il va falloir traduire la chaîne en entier.
Le nom et le prénom sont des champs de structure, dans ce cas que fait-on ? Si c'est des pointeurs on pourra appeler directement getline, si c'est des tableaux de char il faudra copier la saisie dans les tableaux, sans oublier de désallouer la mémoire.
De plus c'est rare de voir dans les cours de C pour débutant l'utilisation de getline. Même le cours de Zeste de Savoir montre la saisie d'une chaîne de caractère avec scanf à moins que ce soit un mauvais cours ?
Je posais la question pour la note car les débutants ne savent pas forcément comment décoder une chaîne représentant un entier. On ne montre pas non plus l'utilisation de fflush(). Et pour un débutant, c'est quoi le stdin ?
Le Tout est souvent plus grand que la somme de ses parties.
De plus c'est rare de voir dans les cours de C pour débutant l'utilisation de getline.
La quasi totalité des cours de C pour débutants leur donnent la mauvaise habitude de négliger totalement les problèmes de sécurité du code. Choisir pour commencer le langage le plus casse-gueule qui soit, et zapper la securité, ça commence fort.
Et si je ne m'abuse, mingw est basé sur gcc, qui a getline parmi ses extensions.
Pour lire à la console des structures avec des champs texte de taille fixe' il faut d'abord lire le texte PUIS le valider (taille, caracteres autorises, suppression des espaces inutiles etc).
On ne le fait pas faire aux débutants, c'est parce que c'est extrêmement pénible à faire correctement en C, qui est complètement déficient de ce côté là. C'est le résultat de l'obstination stupide à vouloir enseigner la programmation en commençant par C.
- Edité par michelbillaud 19 juillet 2021 à 23:27:29
On ne le fait pas faire aux débutants, c'est parce que c'est extrêmement pénible à faire correctement en C, qui est complètement déficient de ce côté là. C'est le résultat de l'obstination stupide à vouloir enseigner la programmation en commençant par C.
A l'époque des dinosaures, les exercices de programmation ne consistaient pas à mener un dialogue interactif avec l'utilisateur.
On traitait essentiellement des données numériques (Et fortran était bien pour ca) avec fin directe du programme si les données prises dans les fichiers étaient verolees.
Quand est venue la possibilité de faire des trucs interactifs (micro ordinateurs) c'était plus marrant mais en réalité le dialogue était en général du grand n'importe quoi. Dialogue non specifie, erreurs non detectees.
- Edité par michelbillaud 20 juillet 2021 à 7:02:33
Je pense souvent que la plus grande partie d'un programme consiste à vérifier les informations fournies par les humains. Ha, si c'étaient des intelligences artificielles qqui entraient les données ... Elles seraient peut-être assez chiantes pour nous embêter.
Le Tout est souvent plus grand que la somme de ses parties.
En effet getline n'est pas standard, n'est pas une extension gcc ; cela concerne la partie libc pas la partie compilo.
Gnu Lib propose un source de remplacement pour les plateformes ne disposant pas de cette ou pour celle qui en propose une déficiente. Bon … gnulib ⇒ autotools … un peu vieillot.
Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e
gestion des étudiants en C
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.