Manipuler des caracteres un par un avec la fonction read...

Signaler
Messages postés
3
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
26 octobre 2009
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour,
Je suis actuellement sur un projet, BSQ.


Il s'agit de trouver le plus grand carré possible sur
un plateau en évitant des obstacles.

Détails:

- Le plateau vous est transmis dans un fichier contenant des '.' et
des 'o' (en premier argument).
exemple:
(prompt)cat example_file
9
...........................
....o......................
............o..............
...........................
....o......................
...............o...........
...........................
......o..............o.....
..o.......o................
(prompt)
- Le but du programme est d'afficher les plateaux en remplissant de x
(en remplaçant des '.') le plus grand carré possible.
exemple:
- Le nombre en debut de fichier indique le nombre de lignes du plateau.
(prompt)./bsq example_file
.....xxxxxxx...............
....oxxxxxxx...............
.....xxxxxxxo..............
.....xxxxxxx...............
....oxxxxxxx...............
.....xxxxxxx...o...........
.....xxxxxxx...............
......o..............o.....
..o.......o................



Bref, j'ai deja bien avance dessus, puisque j'ai en partie repris le code que j'avais fais lorsque j'ai recoder la fonction cat.

Cependant je bloque sur un point, qui est de pouvoir manipuler les caracteres de mon fichier un par un (dans le cadre de mon projet c'est pour pouvoir reperer la position des 'o').


int     my_cat(int fd)
{
  int   nb_read;
  char  buffer[BUF_SIZE];

  nb_read = read(fd, buffer, BUF_SIZE);
  while (nb_read != 0)
    {
      nb_read = read(fd, buffer, BUF_SIZE);
      write(1, buffer, nb_read);
     if ((buffer[BUF_SIZE]) == 'o')
        {
          my_putchar('9');
        }
    }
  return (0);
}


C'est precisemment ici que je bloque :
if ((buffer[BUF_SIZE]) == 'o')
{
my_putchar('9');
}

J'ai essayer de multiple tests afin de voir comment je pourrais faire, mais en vain. Par exemple ici avec 'buffer[BUF_SIZE]'...
J'ai aussi regarde le 'man 2 write' et j'ai pas trouver de solutions

Donc j'aimerais savoir par quoi je dois remplacer mon BUFFER[BUF_SIZE] pour que ca puisse marcher ^^'
Voili voilo, si quelqu'un pouvait me donner un coup de pouce...

Merci d'avance

9 réponses

Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

Je te rappelle qu'a ton entrée à {Epitech.} on a du te dire 2 choses :
1. La pédagogie de l'école veux que tu travailles uniquement à l'école (pour divers raisons), venir demander de l'aide sur un forum c'est comme bosser chez soi, ce n'est pas ce que l'on attend de toi.
2. Il y avais des personnes appelées Astek qui sont là pour t'aider. Ces Astek ont fait ces projets avant toi et les connaissent bien, ils sont parfaitement au courant des habitudes de l'école qui a des normes assez strictes, tant du point de vue de la programmation elle même que par la pédagogie ou le mode de fonctionnement général.

Bref, vas plutôt parler avec un Astek dans ton école, c'est ce qu'il y a de plus intelligent à faire. C'est comme ça qu'Epitech fonctionne, oui on te demande de faire beaucoup de recherches par toi même, mais quand tu as un problème tu dois demander d'abord aux personnes qui sont là pour t'aider. Ne le prend pas mal, ce n'est pas juste pour t'envoyer chier que je te dit ça mais pour te faire comprendre que tu es dans uen école spéciale et qu'il est préférable pour toi de "jouer le jeu".
Messages postés
3
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
26 octobre 2009

Je suis a l'ecole... et il m'y a pas d'Asteks la, d'ailleurs j'en ai pas vu de la journee...
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Je ne sais pas dans quelle ville tu es mais chez nous les Asteks font toujours des permanences afin de toujours être présent et c'est le cas normal de toutes les autres villes. Tu as aussi netsoul pour t'aider a les trouver, c'est utile parfois. Bref, j'ai un peu de mal a croire qu'il n'y ai aucun Astek dispo mais s'il y a vraiment un manquement de leur tu devrais en parler rapidement à ton DPR.
Messages postés
3
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
26 octobre 2009

Je suis a Paris...
Messages postés
396
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 novembre 2009

Bonjour, Bonjour,

Ici un Astek qui parle :
La concentration en Astek de Paris est 5 fois plus élevée qu'en province.
Seule Rennes pourrait encore avoir des choses à dire, chez eux ils n'ont plus d'Astek depuis la fin de la Piscine.
Et pour cause : L'Astek en question est retourné devinnes où ... SUR PARIS. ( Ca devrait t'enjouer !!! )
Donc AUCUNE excuse.



Oui je sais ... Remonter un post comme ca ne ce fait pas ... Et alors, J'assume !
Messages postés
2
Date d'inscription
samedi 28 novembre 2009
Statut
Membre
Dernière intervention
2 décembre 2009

moi je suis dans une ville ou il n y a pas d astek et comme tu voi le taf est fait mais ne fonctionne plus et personne ne voi pk
Messages postés
131
Date d'inscription
samedi 6 janvier 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
Si si, on voit l'erreur, mais apparemment on a pas le droit de te répondre :P
Sinon, hors problèmes d'aztèques (:P), si tu es à Epitech c'est que tu dois avoir un cerveau non ?
Parce que bon, perso moi quand il y a un truc qui réagit bizarrement, j'essaye de l'afficher du genre

if ((buffer[BUF_SIZE]) == 'o')
{
my_putchar('9');
}
else
{
printf("#%c#", buffer[BUF_SIZE]);
}

Attention, c'est une méthode pour utiliser son cerveau, dans cet exemple, c'est STUPIDE !
Bien sur tu auras vu dans ton code que tu sors de ton tableau de char et que tu testes uniquement en dehors de ton tableau ...

Sur ce, bien le bonjour à tous ces Astek dont je ne connaissait pas l'existence avant ce matin.

Bye
Messages postés
2
Date d'inscription
samedi 28 novembre 2009
Statut
Membre
Dernière intervention
2 décembre 2009

ba je men fou de la bsq je lai deja fait lol moi je galer avec mon code get next line c chiant sa fait 3 semaine k je suis dessu
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
11
Bonjour,

berenice84 -> Pas de style SMS s'il te plait.