Bonjour ou bonsoir tt le monde,
Je voudrais savoir comment faire pour connaitre le nombre de lettres contenues dans une chaine de caractères que l'utilisateur tape à la demande d'un programme par exemple.
strlen en C nom_de_la_chaine.length() pour des string en C++
#include <iostream> #include <string> using namespace std; int main(void) { string message = "bonjour"; cout << message.length() << endl; return 0; }
#include <string.h> int main(void) { char message[] = "bonjour"; printf("%lu\n", strlen(message)); return 0; }
#include <cstring> #include <cstdio> using std::strlen; using std::printf; int main(void) { char message[] = "bonjour"; printf("%lu\n", strlen(message)); return 0; }
squale92 :
./11> j'ai justement voulu éviter de mixer autant les deux langages... parce que là, c'est du C++ qui ne fait rien de plus qu'utliser des fonctions C... autant utiliser du C pur, alors, et éviter le sproblèmes de namespace, non ?
Xehn :
ca veut dire qu'en C++ exit les printf et scanf. Ca veut dire que quand je pensais faire du C++ je faisais du C.
Et meeeeeeeeeeeeeeerde.
ca veut dire qu'en C++ exit les printf et scanf. Ca veut dire que quand je pensais faire du C++ je faisais du C.
C'est du C++ parfaitement valide, à condition d'utiliser:
#include <cstdio>
using std:rintf; using std::scanf;
#include <cstdio> using namespace std;
squale92 :
ou, pour ne pas se faire chier, autant faire :#include <cstdio> using namespace std;
et comme ça, tu as accès à tout ce qui est dans l'espace de nom std, sans avoir à rajouter std:: à chaque fois que tu veux l'utiliser (ou à rajouter using machin chose comme tu propose en haut du fichier)
cela dit, printf est moins secure que cout, non ? (vu que les types, avec printf, sont vérifés à l'exécution, lors de l'interprétation de la chaine de caractères, et, avec cout, sont vérifiés à la compilation, lors de l'analyse des surcharges d'opérateurs)
* ISO 9899 n'est pas trés précis, il faudrait préciser ISO 9899:1990 (== ISO C90) ou ISO 9899:1999 (== ISO C99). (D'ailleurs, au point de vue de ISO, le C90 n'existe plus, la version la plus récente le remplace automatiquement.)
* L'ISO C89 n'existe pas, c'est ANSI C89 == ISO C90.
ISO 9899 n'est pas trés précis,
D'ailleurs, au point de vue de ISO, le C90 n'existe plus, la version la plus récente le remplace automatiquement
C'est généralement considéré sale, ça...
printf ne peut pas causer de problèmes de sécurité. (sprintf oui, en revanche...)
squale92
:D'ailleurs, au point de vue de ISO, le C90 n'existe plus, la version la plus récente le remplace automatiquement
ça serait bien pratique, d'ailleurs, si GCC utilisais automatiquement du C99... ça éviterai d'avoir des progs qui compilent à la maison, et quand on arrive en cours, qui compilent plus à cause des variables définies au milieu de blocs...
(et une heure à chercher pourquoi, avant de se rappeler qu'il faut mettre un switch) (enfin, ça le fait peut-être dans les versions récentes... on doit pas avoir une version récente à l'iup...)
Je pense qu'ils mettent du -ansi -pedantic avec un alias dans le shell pour que vous utilisiez du code standard,
Sauf qu'il est sur une norme qui a 15 ans et qui est obsolète depuis 5!
squale92
: => question portabilité, le C90 est plus adapté...
sauf qu'il était sur une norme correspondant au compilateur qu'on avait à disposition (MSVC 6),