URL: https://linuxfr.org/forums/programmation-c/posts/traduction-d-un-programme-c-en-c Title: Traduction d'un programme C++ en C Authors: roger91 Date: 2015年12月26日T11:55:13+01:00 License: CC By-SA Tags: Score: -1 Bonjour à tous, J'ai un petit souci. J'aimerais traduire ce programme C++ en C. Il permet de récupérer dans un fichier une chaîne de caractères en allouant dynamiquement un pointeur sur la chaîne et affiche cette chaîne. ```c++ #include #include #include #include using Buffer = std::vector< char>; void display( Buffer::const_iterator begin, Buffer::const_iterator end ) { std::for_each( begin, end, []( char c ) { std::cout << static_cast< int>( c ) << " "; } ); } int main( int argc, char * argv[] ) { //on prend le fichier en entrée du programme, donc on veut au moins 2 arguments. if ( argc < 2 ) { std::cerr << "Usage: coin myfile" << std::endl; return EXIT_FAILURE; } // Le fichier, ouvert en lecture std::fstream file( argv[1], std::ios::in ); if ( file.is_open() ) { // Mon buffer Buffer buffer( 20 ); file.read( buffer.data(), 1 ); if ( !file.fail() ) { display( buffer.begin(), buffer.begin() + 1 ); } // Tant qu'on n'a pas fini le fichier, on va le lire while ( !file.eof() && !file.bad() && !file.fail() && file.rdbuf()->in_avail() ) { // Je lis le fichier, en ne lisant que ce que mon buffer peut contenir // Et je récupère le nombre d'octets lus pour plus tard auto read = file.readsome( buffer.data(), buffer.size() ); //je ne vais afficher que ce que j'ai lu if ( read && !file.fail() ) { display( buffer.begin(), buffer.begin() + int( read ) ); } } file.close(); std::cout << std::endl; } else { std::cerr << "Couldn't open the file" << std::endl; } return 0; } ``` Merci d'avance !

AltStyle によって変換されたページ (->オリジナル) /