Désolé, je ne suis pas réveillé ce matin. Je me suis trompé, parce que je n'avais pas vu que c'était des chaines de caractères et parce que j'avais lu les mots "retour fonction" dans le titre qui m'avaient fait penser que le problème aurait été que les données n'auraient pas été retournées, ce qui se serait produit si on avait donné le contenu au lieu du pointeur. Donc, quelle est la question ?
Est-ce optimale ? La réponse est que cela dépend de ce que l'on veut et de son environnement. Au lieu du fscanf, on pourrait avoir un fread, et on pourrait alors s'assurer que chaque caractère est correct et mieux gérer les erreurs éventuelles. Mais ce serait plus compliqué à programmer.
Comment comparer un pointeur et un entier ?
Si c'est un pointeur sur un entier, alors on utilise l'étoile "*" pour dire que l'on veut le contenu de la donnée, par exemple :
int *p;
int i;
*p = 2
i = 3
if (i > *p)
... |
Si c'est un pointeur sur une chaine, alors il faut convertir la chaine en un entier en prenant chaque caractère de la chaine, en le convertissant ce caractère en un chiffre, en ajoutant ce chiffre au résultat précédent multiplié par dix. Ensuite on compare l'entier et le nombre qui provient de la conversion de la chaine de caractère.