[LMIC] tail

Voir le sujet précédent Voir le sujet suivant Aller en bas

[LMIC] tail

Message  john le Jeu 01 Mai 2008, 11:43

bonjour à tous,

je suis en train de faire le td4 et j'ai quelquels problèmes,.....pale
pourrait quelqu'un me dire comment faire la fonctionne tail?, j'ai vu ce qu'elle fait MAIS j'ai aucune idée de comment commencer.. une petite logique en français m'aiderais beaucoup. ou bien elle se resemble à quelle fonctionne??

merci,
Neutral pale

john

Nombre de messages : 64
Prénom : john
Statut : 2ème Reseaux
Date d'inscription : 25/11/2007

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  Wark le Jeu 01 Mai 2008, 12:28

faire
lire nouvelle chaine
stocker la chaine lue qq part
stocker la longueur de la chaine lue
jusqu'a ce que (nb_caractères_lu = 0)

récupèrer toutes les chaines et les afficher.

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  pbt le Jeu 01 Mai 2008, 14:12

Le problème du tail n'est pas spécialement simple à mettre en oeuvre.

Tu as sans doute remarqué (via la page de manuel et les essais que tu as fait) que cette commande permet d'afficher les 10 dernières lignes d'un fichier. Elle peut faire plus mais nous nous contentons de ça.

Pour ta bonne information il existe une commande head qui permet d'afficher --par défaut-- les 10 premières lignes d'un fichier, cette commande ne pose pas de problème; j'affiche une ligne tant que c'est <10, puis j'arrête.

Ici, je dois afficher les 10 dernières lignes d'un fichier dont je ne connais pas à priori le nombre de lignes ... et pas question de lire deux fois le fichier (une fois pour compter le nombre de lignes et la seconde fois pour les afficher), ce ne serait pas propre et se serait gênant pour les |.

Comment j'imagine de faire (je ne l'ai pas encore fait) sachant que ça implique des limitations;
- Je me réserve 10 buffers de ... hum 1024 caractères.
Limitation, mon programme n'autorisera pas la lecture de lignes de plus de 1024 caractères.
- Je considère ce tableau de buffer comme étant ciculaire, c'est-à-dire qu'après buffer[9], vient buffer[0].
- Ensuite, "il me suffit" de remplir ce tableau de buffer au fur et à mesure que je lis les lignes dans le fichier (J'écrase à chaque fois la 10+1 nième ligne). À la fin de fichier, j'affiche les 10 buffers ... à partir de "la bonne position".

Et voilà ... il reste à mettre ça en oeuvre ;-)


_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  Gustavo le Jeu 01 Mai 2008, 22:26

Bon, j'ai utlisé un cercle de buffer et j'ai réussi obtenir quelque chose....en tous cas pour un fichier.

Mon probleme survien dès que j'en lis plusieurs du fait que les caractères restes dans le buffer, donc si j'envoi deux fichiers à nTail et que le premier à des ligne plus longue, une partie de celle ci sont réaffichées.

La seule solution que je vois serait de stocker également le longueur de chaque ligne donc des variables. Une methode bien lourde je trouve, donc si quelqu'un a une meilleure solution à me proposer j'en serais ravis sunny


au fait, j'ai seché quelque heures sur une erreur un peu stupide qui me provoquait des petits problèmes d'affichage: Pensez bien à rajouter un 0 à la fin de chaque ligne Wink

Gustavo

Nombre de messages : 260
Age : 29
Prénom : Renaud
Statut : étudiant 4SEC
Date d'inscription : 10/01/2008

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  nvs le Jeu 01 Mai 2008, 22:38

Gustavo a écrit:La seule solution que je vois serait de stocker également le longueur de chaque ligne donc des variables. Une methode bien lourde je trouve, donc si quelqu'un a une meilleure solution à me proposer j'en serais ravis sunny
utilise une marque de fin de chaîne de caractères, comme tu l'indiques ci-dessous Smile

Gustavo a écrit:au fait, j'ai seché quelque heures sur une erreur un peu stupide qui me provoquait des petits problèmes d'affichage: Pensez bien à rajouter un 0 à la fin de chaque ligne Wink








_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  Gustavo le Jeu 01 Mai 2008, 22:45

Merci

Je viens de me rendre compte en fait que grace à mon probleme j'avais peut être trouvé la solution pour l'exercice 4:

4. Écrivez le programme nPaste identique à la commande paste sans option.

Razz

edit: mais au fait, pour utiliser un caractère de fin de cette façon, il faudrait que je réaffiche caractère par caractère, alors que là je lui envoyait simplemet toute la ligne Sad

Gustavo

Nombre de messages : 260
Age : 29
Prénom : Renaud
Statut : étudiant 4SEC
Date d'inscription : 10/01/2008

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  nvs le Jeu 01 Mai 2008, 22:56

Gustavo a écrit:pour utiliser un caractère de fin de cette façon, il faudrait que je réaffiche caractère par caractère, alors que là je lui envoyait simplemet toute la ligne Sad
et elle fait comment la fonction qui affiche toute une ligne pour savoir quand s'arrêter ?








_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  Gustavo le Jeu 01 Mai 2008, 23:02

nvs a écrit:
Gustavo a écrit:pour utiliser un caractère de fin de cette façon, il faudrait que je réaffiche caractère par caractère, alors que là je lui envoyait simplemet toute la ligne Sad
et elle fait comment la fonction qui affiche toute une ligne pour savoir quand s'arrêter ?








Et ben je lui envoie chaque fois la ligne de 1024 avec un 0 quelque parte dedans juste apres le dernier caractère de la ligne (le line fee en fait) et c'est tout. Le reste de la ligne ne contient, de toute façon ,rien du tout ... sauf dans le cas ou j'ai déja lu un fichier avant pale

edit: quand je di tout la ligne je parle de l'adresse en fait, suivit de sa longueur

Code:

 mov eax,1024
        mul dword[i]
        mov esi,buff
        add esi,eax

        mov eax,4
        mov ebx,1              ;écran en écriture
        mov ecx,esi
        mov edx,1024
        int 80h

Gustavo

Nombre de messages : 260
Age : 29
Prénom : Renaud
Statut : étudiant 4SEC
Date d'inscription : 10/01/2008

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  nvs le Jeu 01 Mai 2008, 23:28

Gustavo a écrit:
nvs a écrit:
Gustavo a écrit:pour utiliser un caractère de fin de cette façon, il faudrait que je réaffiche caractère par caractère, alors que là je lui envoyait simplemet toute la ligne Sad
et elle fait comment la fonction qui affiche toute une ligne pour savoir quand s'arrêter ?

Et ben je lui envoie chaque fois la ligne de 1024 avec un 0 quelque parte dedans juste apres le dernier caractère de la ligne (le line fee en fait) et c'est tout. Le reste de la ligne ne contient, de toute façon ,rien du tout ... sauf dans le cas ou j'ai déja lu un fichier avant pale

edit: quand je di tout la ligne je parle de l'adresse en fait, suivit de sa longueur

Code:

 mov eax,1024
        mul dword[i]
        mov esi,buff
        add esi,eax

        mov eax,4
        mov ebx,1              ;écran en écriture
        mov ecx,esi
        mov edx,1024
        int 80h
tu affiches donc à chaque fois 1024 caractères. ce n'est pas beau. mais si tu veux vraiment faire comme ça, tu peux remettre toutes les chaînes de caractères à zéro avant de traiter le second fichier.






_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  Gustavo le Jeu 01 Mai 2008, 23:38

Oui j'ai essayé en fesant une petit boucle mais ça me fait quand même des petit problàme d'affichage j'ai li'mpression. Je crois je vais essayé caractère par caractère pour voir.

merci

Gustavo

Nombre de messages : 260
Age : 29
Prénom : Renaud
Statut : étudiant 4SEC
Date d'inscription : 10/01/2008

Revenir en haut Aller en bas

[LMIC] tail

Message  john le Ven 02 Mai 2008, 00:31

bonjour à tous,

j'ai des problèmes pour comprendre les tableaux circulaires, !!

1./par exemple ce que monsieur pbt a dit: buffer[9], vient buffer[0], je comprends qu'on reviens au zéro mais pour remplir le tableau, on ne va pas écraser ce qu'on a écrit de 0 à 9?? desole si je parle de bêtises mais je ne comprends pas:cry:

2./aussi on nous a dit de déclarer 10 buffs de 1024, mais franchement je vois pas comment remplir les dix tableaux s'il sont circulaires??Neutral

j'ai recherché de l'info par rapport à ça, mais il y a pas grand chose pour m'aider...

est-ce que quelqu'un pourrait m'expliquer ? je voudrais avancer avec ce td4:|

john

Nombre de messages : 64
Prénom : john
Statut : 2ème Reseaux
Date d'inscription : 25/11/2007

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  Gustavo le Ven 02 Mai 2008, 00:39

john a écrit:
1./par exemple ce que monsieur pbt a dit: buffer[9], vient buffer[0], je comprends qu'on reviens au zéro mais pour remplir le tableau, on ne va pas écraser ce qu'on a écrit de 0 à 9?? desole si je parle de bêtises mais je ne comprends pas:cry:

C'est justement le but recherhcé puisque seulement les dix dernières lignes lues nous interressent Smile

john a écrit:
2./aussi on nous a dit de déclarer 10 buffs de 1024, mais franchement je vois pas comment remplir les dix tableaux s'il sont circulaires??Neutral

t'as juste un buffer pour lequel tu reserves 10 fois 1024 octets. Après tu tu peux le visualiser quand un tablaux en deux dimensions (10 lignes de 1024 colonnes) mais ce n'est qu'un vision de l'esprit car en fait c'est plutot une longue ligne ou un vecteur dans le tu te déplace de 1024 en 1024.

Moi j'utilise deux variables i et j pour me deplacer dans le vercteur => [i*1024+j]

pirat

Gustavo

Nombre de messages : 260
Age : 29
Prénom : Renaud
Statut : étudiant 4SEC
Date d'inscription : 10/01/2008

Revenir en haut Aller en bas

[LMIC] tail

Message  john le Ven 02 Mai 2008, 00:46

merci beaucoup pour ta explication Gustavo;)

john

Nombre de messages : 64
Prénom : john
Statut : 2ème Reseaux
Date d'inscription : 25/11/2007

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  nvs le Ven 02 Mai 2008, 00:48

john a écrit:je voudrais avancer avec ce td4:|
a priori, il y a un seul exercice d'évaluation. si tu as résolu l'exercice rev, tu es prêt à plus de 50% pour attaquer l'exercice d'évaluation. l'exercice tail ne va, dans ce cas, pas énormément t'aider, contrairement aux deux avant-derniers exercices. mais peut-être ton prof demande-t-il que vous résolviez tous les exercices.












_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

[LMIC] tail

Message  john le Ven 02 Mai 2008, 00:52

ah ok monsieur;)

john

Nombre de messages : 64
Prénom : john
Statut : 2ème Reseaux
Date d'inscription : 25/11/2007

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  nvs le Ven 02 Mai 2008, 01:09

je n'ai pas dit de ne pas faire le tail... mais je me pencherais d'abord sur l'exercice d'évaluation, après rev et les deux qui précédent l'exercice d'évaluation. tail (difficile) et paste (facile), j'y reviendrais ensuite. ceci vaut évidemment si tu n'es évalué qu'en rapport avec l'exercice final.









_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMIC] tail

Message  Contenu sponsorisé Aujourd'hui à 14:49


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum