Dans une mission pour un collège, il a été suggéré d’utiliser la fonction C readline
dans un exercice. J'ai cherché sa référence mais je ne l'ai toujours pas trouvée. Est-ce qu'il existe vraiment? Dans quel en-tête? Pouvez-vous s'il vous plaît poster le lien vers la référence?
Readline existe à deux endroits, libreadline
et libedit
(également appelé libeditline
). Les deux ont une interface identique. La différence est que libreadline est sous licence GPL, libedit étant à 3 clauses BSD. L'octroi de licence n'est vraiment pas une préoccupation pour une cession, du moins je ne le pense pas. L'une ou l'autre licence vous permet d'utiliser le code librement. Si vous créez un lien contre readline, assurez-vous que le programme entier GPL 2 or later
conviendra quelle que soit la version de la GPL régissant le système readline
. Il peut s'agir de GPL2 + ou GPL3 +, en fonction de l'âge du système. Je ne préconise pas de licence, c'est à vous.
Remarque: veillez à installer/ou et à ajuster la liaison selon vos besoins (-lreadline
ou-ledit
ou-leditline
). Les deux sont des bibliothèques et ne font pas partie de la bibliothèque C standard.
Edit (après coup):
Si vous relâchez un programme dans la nature, c’est un geste agréable pour permettre à l’utilisateur de le configurer avec la variable readline
de son choix. Par exemple: --with-readline
ou --with-libedit
, etc. Cela permet à un package binaire conforme à leur choix de licence, au moins pour readline
.
Liens: Readline et Éditer/Éditer la ligne .
Je ne pense pas que ce soit une fonction standard.
Je simple implémentation serait comme ça:
char * Readline (char * in) { char * cptr; if (cptr = fgets (in, MAX_LINE, stdin)) { /* kill espace précédent, mais laissez\n afin que nous ayons quelque chose de tandis que (* cptr == '' || * cptr == '\ t') { cptr ++; } return cptr; } else { renvoyer 0; } }
Il utilise fgets () pour lire jusqu'à MAX_LINE - 1 caractères dans le tampon 'in'. Il supprime les espaces précédents et renvoie un pointeur sur le premier caractère non-blanc.
Si vous avez besoin d'une fonction "readLine ()", comme readLine () dans Java-BufferedReader, vous pouvez aussi utiliser librement ma fonction «char * get_line (FILE * filePointer)» dans "line.h", que j'ai écrit juste pour. cet objectif: https://github.com/pheek/line.h/blob/master/line.h