Pardonnez moi, je déterre la discussion du début de ce topic, parce que je la trouve super intéressante car débutant moi aussi. Pour ce qui est de la lecture de l'entrée utilisateur, je préfère utiliser les sys calls, parce que je pense que c'est un très bon moyen de progressivement s'approprier les techniques de ce language si particulier. Et aussi, mais c'est un avis personnel, parce que je pense que le C n'est pas fait pour être utilisé en faisant abstraction de la gestion de mémoire. Les librairies standards peuvent faire le café, mais je pense qu'elles ne font pas le poids aujourd'hui avec d'autres languages à partir du moment où on veut faire quelque chose de solide (ie: sans arrêts soudains du programme, comportements indéterminés, ou pire un problème au runtime).
Ce qui me gêne avec fgets, c'est qu'au lieu de retourner le nombre de charactères lus (comme c'est le cas pour read), il retourne un pointeur sur le buffer lu. Du coup, on peut penser qu'il a correctement lu l'entrée de l'utilisateur alors que non. Ce n'est pas mortel c'est un petit problème. Mais qui peut s'ajouter à d'autres petits problèmes, et qui, au bout de quelques lignes de codes en plus peut devenir enquiquinant.
L'avantage quand on choisit d'utiliser ces fonctions c'est qu'on peut commencer doucement à mettre la main dans le cambouis et penser à comment fonctionne un programme, qu'est ce que coûte une suite d'instructions ? comment on peut faire des optis etc... L'inconvénient c'est qu'il faut essayer de penser à tout, je pense que c'est justement cet exercice qui vaut le coup !
ssize_t read(int fd, void* buf, size_t nbytes);
http://www.linux-france.org/article/man ... ead-2.htmlssize_t write(int fd, void *buf, size_t nbytes);
http://www.linux-france.org/article/man ... ite-2.html