Lire de la conduite de ligne en ligne dans C

Comment puis-je séparer les lignes qui sont à venir à partir d'un tuyau. Dans le tube il y a ce texte:

HALLO:500\n
TEST:300\N
ADAD
ADAWFFA
AFAGAGAEG

Je veux séparer les lignes de la pipe parce que je veux enregistrer les valeurs dans des variables.

Voici mon code c:

#include <stdio.h>
#include <stdlib.h>

#define BUFFERSIZE    1

int main(int argc, char **argv){
    unsigned char     buffer[BUFFERSIZE];
    FILE                         *instream;
    int                            bytes_read=0;
    int                            buffer_size=0;


    buffer_size=sizeof(unsigned char)*BUFFERSIZE;
    /* open stdin for reading */
    instream=fopen("/dev/stdin","r");

    /* did it open? */
    if(instream!=NULL){
        /* read from stdin until it's end */
        while((bytes_read=fread(&buffer, buffer_size, 1, instream))==buffer_size){
            fprintf(stdout, "%c", buffer[0]);
        }
    }
    /* if any error occured, exit with an error message */
    else{
        fprintf(stderr, "ERROR opening stdin. aborting.\n");
        exit(1);
    }

    return(0);
}

Est-ce la bonne façon de lire à partir de tube pour la meilleure ligne par ligne?

  • for the best est une question subjective. Vous êtes vraiment face à un problème?
  • Remplacer fread avec fgets.
InformationsquelleAutor bladepit | 2013-04-23