• [^] # Re: Les fichiers spéciaux ?

    Posté par (site web personnel) . En réponse au message Conseil pour débuter en c++. Évalué à 2.

    Contrairement aux idées reçues, le C n'est pas un passage nécessaire pour l'apprentissage du C++. Il complique pas mal les premiers pas du débutant en forçant très tôt l'apprentissage de notions évoluées qui auraient pu être vues en toute quiétude bien plus tard. C'est aussi comme cela que l'on se retrouve avec des cours/TPs/TDs qui montrent des codes incorrects (typiquement qui font dans le buffer overflow), les codes justes étant trop complexes pour des débutants.

    Et non, commencer par le C++, ne veut pas dire de commencer par l'OO. Il s'agit juste de s/char*/std::string, s/array/std::vector, s/passage de pointeurs par valeur/passage d'argument par référence/, s/syntaxe et pièges de printf/cout, s/scanf(ptr)/cin>>donnée/, ... C'est tout bête, mais cela fait toute la différence : on peut se concentrer sur l'algorithmique et autres choses vraiment importantes dans un premier temps.

    Bref. Plein de ressources à ce sujet :
    - la FAQ sur le site de Stroustrup, avec un lien vers un article que je ne peux que conseiller de lire et de méditer. Il traite du pourquoi le C++ doit être enseigné comme un langage à part entière
    - la FAQ sur developpez qui a une Q/R sur comment débuter en C++.

    Je vous laisse sortir votre moteur de recherche préféré.

    Côté cours de C++, le meilleur que je connaisse, c'est Accelerated C++, par Koenig et Moo chez Addisson Wesley. Il n'a pas été traduit. C'est un ouvrage pédagogique qui n'est pas un ouvrage de référence, et qui ne traite ni de C, ni de C/C++, mais bel et bien de C++98.


    Pour en revenir à ce que cherche à faire l'OP. Non seulement le C++ n'est pas le plus adapté à ce genre de traitements (tout comme le C ; Cf. la redirection déjà montrée qui prend un tiers de ligne à écrire), mais en plus le C++ natif ne doit pas le permettre si mes souvenirs sont bons -- je ne suis pas persuadé que l'on puisse ouvrir /dev/lp0 avec un simple std::fstream, mais je peux me tromper. Il y a de fortes chances qu'il faille utiliser des APIs système ou POSIX, dont les interfaces demandent des connaissances en C...