web-dev-qa-db-fra.com

Fonction C readline

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?

14
nunos

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 (-lreadlineou-leditou-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

15
Tim Post

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.

3
yassin

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

0
iGeeks