• [^] # Re: ca serait pas plutot

    Posté par . En réponse au message programme c qui émule la commande cat. Évalué à 5.

    > attention, ca fait 2 ans que j'ai plus fait de C, et j'ai jamais été vraiment bon

    Ca s'est vu ;)

    ça ressemble tellement a un exo que je vais pas donner la solution que j'ai sous les yeux. Juste un début de correction à la place.

    Premier problème : il y a un ';' en trop.

    Deuxième problème, il est liè à la condition du "while" : tu utilises la virgule. Mais la virgule, ce n'est jamais qu'un opérateur de séquence, et la valeur de la séquence (c'est ce qui nous intéresse principalement pour ton problème) correspond à la valeur du dernier élément de la séquence : ici c'est "!NULL". Bref, ton while ne termine jamais, comme tu as pu le voir. Faire la négation, comme suggéré, n'est pas la bonne solution... le corps du while ne sera plus jamais exécuté, c'est tout. Bref, un indice quand même : on peut écrire la condition du while sans utiliser la virgule. Autre indice : man read.

    Troisième problème, tu pourras éviter d'afficher le contenu du binaire, ça fera moins mal au terminal. Indice : regarde ta boucle for et la définition de argc/argv dans un bouquin.

    Quatrième problème : si on te demande d'éviter les fputs & co, alors "printf" fait aussi partie du lot (surtout que ce que tu affiches n'est pas ce qui est demandé). Indice : trouver une fonction comme "read" mais qui écrit au lieu de lire... je te préviens, c'est pas évident.

    Du pinaillage : éviter les appels intempestifs à "exit", surtout quand on est dans le "main". Autre pinaillage : plutôt que d'écrire "1024" en dur dans le read, essaye de faire un truc genre : une macro qui vaut 1024 et qui est utilisée à la fois dans la def du tampon et dans le write, et/ou utilise sizeof() dans la read.