6
votes

Pointeur de retour de la fonction c

Dans mon programme C Cette fonction va gérer tous les travaux d'ouverture d'un fichier spécifique, puis renvoyer le pointeur de fichier, de sorte que les fonctions principales ou autres peuvent lire le contenu à l'aide de FP, mais jusqu'à présent, je n'ai pas pu être capable. Pour que cela fonctionne.

Je vais juste apprendre la langue, il est donc possible que je fais quelque chose de très faux. xxx


2 commentaires

Vous essayez de renvoyer un pointeur à un fichier structure sous forme d'un int . Qu'est-ce qui (en plus de cette erreur) voyez-vous?


En tant que problème de style de codage, vous devez comparer FP contre null au lieu de 0 . Si vous pourriez également être plus clair pour séparer l'affectation et la comparaison de FP dans des déclarations distinctes.


3 Réponses :


11
votes

Dans la première ligne, vous avez

return NULL


2 commentaires

Parfait, maintenant je suis capable de passer des argendes [1] à la fonction et d'imprimer le contenu de Main. Comme beaucoup d'entre vous disent, je devrais comparer FP à NULL, pourquoi cela?


Sur certaines plates-formes peu communes, NULL peut ne pas être 0. Ce n'est pas vrai en C ++ ou la plupart des endroits en pratique.



0
votes

fichier * open_text_file (); doit être le prototype.

Un int n'est pas un fichier * .


0 commentaires

6
votes

La fonction est un peu inutile, car tout ce qu'il fait est ce que fopen () fait, plus le message d'erreur. Ce n'est pas un bon design, car la branche d'erreur doit également renvoyer un pointeur (probablement NULL), qui doit ensuite être testé à nouveau dans le code d'appel. Mieux serait simplement de dire: xxx


0 commentaires