1

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.

2

strlen

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

3

strlen en C
nom_de_la_chaine.length() pour des string en C++
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

4

Tiens, squale92, tu as changé ton avatar ?

5

en effet smile
un peu de TCI, et un peu de T3 smile
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

6

merci

7

En fait, non merci
J'ai pas bien compris comment utiliser length(). Si on enregistre une chaine de caracteres dans message par exemple, il suffit de faire message.length() pour connaitre le nombre de lettres de mon message?

8

si message est de type string, oui.
en sachant que ça renvoie le nombre de caractères, sans le 0 de fin de chaine (qu'il faut considérer si tu veux le convertir ta string en chaine C, par exemple)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

9

Lorsque je compile:

#include <iostream>
#include <stdlib.h>

int main(void)
{
char * message= "bonjour";
message.length();
}

Ca me marque une erreur sur la ligne message.length().

10

je cte de ma première réponse :
strlen en C nom_de_la_chaine.length() pour des string en C++

de toute évidence, ici, tu fais du C... enfin, tu utile du C dans un programme C++ (tout dans ton programme est C, sauf le iostream, qui est C++)
là, tu as méchamment mélange les chaines C et C++...

en C++, les chianes sont des objets de class string... et c'est dans cette classe string qu'il y a la méthode length...
tu n'utilise pas de string dans ton code... => pas possible d'utilise length !!!

en C++ :
 #include <iostream>
#include <string>
using namespace std;

int main(void)
{
    string message = "bonjour";
    cout << message.length() << endl;
    return 0;
} 



en C :
 #include <string.h>

int main(void)
{
    char message[] = "bonjour";
    printf("%lu\n", strlen(message));
    return 0;
} 



(sauf erreurs non vues)
[edit]correction d'une erreur
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

11

[nosmile]En bon C++, la variante "C" s'écrit:
#include <cstring>
#include <cstdio>
using std::strlen;
using std::printf;
 
int main(void)
{
    char message[] = "bonjour"; 
    printf("%lu\n", strlen(message)); 
    return 0; 
}
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

12

./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 ?
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

13

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. mad

14

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 ?

Clair. Mais si on a besoin de C++ pour autre chose, il arrive qu'il y ait des fonctions comme celles-ci dans un programme C++ plus grand.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

15

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. mad

C'est du C++ parfaitement valide, à condition d'utiliser:
#include <cstdio>
using std::
printf;
using std::scanf;

(L'utilisation directe de <stdio.h> en C++ est possible, mais "deprecated".)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

16

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.

bah, scanf, c'est super chiant à utiliser, par rapport à cin !!!
cin powa, quoi

exit, il me semble que c'est ANSI-C++ aussi... le contraire serait ridicule...
enfin, de toute façon, rien ne t'empéche d'utiliser du C dans du C++... même si c pas super joli grin
(après vérification, exit est POSIX, ISO89 et 99, et autres normes : SVID 3, POSIX, BSD 4.3, ISO 9899 ("ANSI C") )

avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

17

C'est du C++ parfaitement valide, à condition d'utiliser:
#include <cstdio>
using std:tonguerintf; using std::scanf;

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)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

18

* L'ISO C89 n'existe pas, c'est ANSI C89 == ISO C90.
* 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.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

19

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)

C'est généralement considéré sale, ça...
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)

printf ne peut pas causer de problèmes de sécurité. (sprintf oui, en revanche...)

EDIT: Euh... Enfin, si, on peut quand-même lire des données auxquelles on n'est pas censé avoir accès si printf est utilisé de manière foireuse (printf(s); au lieu de printf("%s",s);).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

20

* 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.)


jprefer qd mm la ASA

21

* L'ISO C89 n'existe pas, c'est ANSI C89 == ISO C90.

argh sad
un peu tendance à tout mettre dans le même panier sad
ISO 9899 n'est pas trés précis,

bah... j'ai copié collé le man, quoi grin
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 rage)
(enfin, ça le fait peut-être dans les versions récentes... on doit pas avoir une version récente à l'iup...)

C'est généralement considéré sale, ça...

mais pratique grin
printf ne peut pas causer de problèmes de sécurité. (sprintf oui, en revanche...)

ah, ok.
d'accord pour sprintf... pour printf, si tu le dis smile
[edit] ok pour printf (bis smile )
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

22

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 rage) (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, et ça donne du C90 strict. (Pour le C99, c'est -std=c99 -pedantic.) Par défaut, GCC utilise du C90+extensions GNU, et les déclarations au milieu du code en font partie.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

23

Je pense qu'ils mettent du -ansi -pedantic avec un alias dans le shell pour que vous utilisiez du code standard,

argh, ça me ferait mal que ce soit ça grin
m'enfin... en même temps, y'a des profs qui seraient capable d'avoir fait pression sur l'admin pour ce genre de choses sad
on aurait fait nos TP de C/C++ à l'iut en première année sous gcc, obligé notre prof aurait fait utiliser ces options grin... il était tellement à cheval sur la norme ANSI... mais bon, il avait pas tord, dans le fond.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

24

Sauf qu'il est sur une norme qui a 15 ans et qui est obsolète depuis 5! roll
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

25

...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

26

Sauf qu'il est sur une norme qui a 15 ans et qui est obsolète depuis 5!

sauf qu'il était sur une norme correspondant au compilateur qu'on avait à disposition (MSVC 6), qui n'était pas conforme C99 (du moins, je suppose, vu qu'il est sorti en 98)
n'importe quel compilateur, de nos jours, admet la norme ANSI89... tous n'admettent pas le C99... => question portabilité, le C90 est plus adapté...
(et puis, à la limite, y'a même le K&R... mais bon, ça, c'est encore plus vieux grin )
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

27

Allez j'anticipe la réponse de Kevin : "un compilateur qui ne supporte pas le C99, c'est poubelle direct grin" et "il y a de très bons compilateurs libres marchant sur des milliards de plateformes smile"

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

28

on avait pas gcc sous windows... et sous unix, il était pas dans le path.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

29

squale92
: => question portabilité, le C90 est plus adapté...

Mais ce n'est plus un standard! ISO a révoqué le standard C90 comme ils le font avec tous les standards dont une nouvelle version est disponible.
sauf qu'il était sur une norme correspondant au compilateur qu'on avait à disposition (MSVC 6),

Vive les compilateurs obsolètes... Tout parce qu'ils utilisent du M$ avec leurs mises à jour payantes.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

30

MSVC 6.0 est peut-être obsolète mais il fonctionne très bien (et parfois même mieux qu'un certain compilateur dont je tairai le nom) alors pour des étudiants, je ne vois pas le problème roll
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741