my_cat

my_cat - C - Programmation

Marsh Posté le 16-11-2012 à 20:50:38    

Bonjour,  
 
Je chercher à créer ma propre fonction my_cat dans le but d'ouvrir 1 ou plusieurs fichiers passés en ligne de commande.  
C'est un exercice de programmation de base, mais je n'y arrive pas. Je vous donne des pistes données par notre prof.  
 
" void my_cat(int fd): Cette fonction prend en parametre un file descriptor, alloue de la memoire(malloc), lis ce FD dans la memoire, affiche ce qu'elle a lue et free la memoire. (Vu que read ne peut lire qu'un nombre limité de caractere, le couple read / write est dans un boucle while)  
 
main: Cette fonction ouvre le fichier, appelle my_cat avec le FD du fichier ouvert puis close le fichier.  
Dans le cas ou il n'y a pas d'arguments passé en parametre, le main appelle my_cat avec le FD de l'entrée standard."  
 
Pouvez vous me donnez des pistes, ou des solutions...merci beaucoup.

Reply

Marsh Posté le 16-11-2012 à 20:50:38   

Reply

Marsh Posté le 16-11-2012 à 21:04:07    

Bonjour !
 
Les appels système de gestion de fichiers dont vous aurez besoin (je n'en détaille pas le fonctionnement, le nom est suffisamment clair :) )
 
  * open
  * read
  * close
 
Dans votre main, vous bouclez sur les arguments et ouvrez les fichiers correspondants, cela ne devrait, a priori, ne pas poser de difficulté majeure. Pour le reste l'algorithme donné par votre professeur est très clair.
 
Si vous avez besoin d'autres conseils/indices, postez votre avancement pour lancer la discussion.
 
PS : Pourquoi parler de la fonction write ?

Reply

Marsh Posté le 18-11-2012 à 14:40:33    

Salut
Tout est très bien expliqué. C'est quoi exactement que d'afficher un fichier ?
C'est
1) lire un nombre défini d'octets et les stocker dans une zone (dans laquelle on aura préalablement alloué de la mémoire)
2) si la lecture n'a pas réussi, c'est à dire s'il n'y avait plus rien à lire alors sortir de la boucle
3) sinon afficher le contenu de ladite zone à l'écran et revenir en 1
4) ici juste avant de quitter la fonction, libérer la zone allouée
 
Le main, lui, se chargeant d'ouvrir le fichier pour pouvoir transmettre son descripteur à la fonction puis le refermer à l'issue.
 
Bien entendu cela nécessite de connaitre les fonctions de manipulation de fichiers. Farian pense à open/read/close (qui sont les fonctions de bas niveau) mais peut-être que ton prof a préféré parler des fonctions de haut niveau qui sont fopen/fread/fclose. Quoi qu'il en soit c'est l'un ou l'autre groupe...

Reply

Marsh Posté le 18-11-2012 à 20:58:39    

Sve@r a écrit :

Farian pense à open/read/close (qui sont les fonctions de bas niveau) mais peut-être que ton prof a préféré parler des fonctions de haut niveau qui sont fopen/fread/fclose. Quoi qu'il en soit c'est l'un ou l'autre groupe...


 
L'utilisation de ce groupe de fonctions me paraît évident vu que l'énoncé parle d'un file descriptor  :bounce:  
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed