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

ROW_PyRo Messages postés 3 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 26 octobre 2009 - 26 oct. 2009 à 17:42
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 2 déc. 2009 à 14:19
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

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
26 oct. 2009 à 19:00
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".
0
Rejoignez-nous