Length

Résolu
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 22 juil. 2004 à 09:03
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 27 juil. 2004 à 16:09
bonjour
question peut etre simple d'un debutant:

je voudrais connaitre le nb de caractere dans une saisie(fenetre windows) donc j'ai fais
 
cout<<"taper le nombres pour calculer son image"<<endl;
 cin>>a;

 if (a.length()<6)
 {
 cout<<"taper un nombre plus grand"<<endl;
}

mais voila ce que me repond le compilateur :

request for member `length' in `a', which is of non-aggregate type `long int'

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"

11 réponses

JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005
22 juil. 2004 à 12:00
si c un nombre...
double a;
la condition c'est:
if(a<=999999)...;
NB: ne pas abuser des while(true) c quand meme plutot sale!

JackosKing For EvEr
3
gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010
22 juil. 2004 à 10:40
Si tu veux tester un nombre si c'est plus grand que l'autre

int a;
cout<<"taper le nombres pour calculer son image"<<endl;
while(true)
{
cin>>a;

if (a<6)
cout<<"taper un nombre plus grand"<<endl;
else
break;
}

Mais si tu veux connaitre si le nombre de caractère d'une chaine est plus court que l'autre

char a[longueur maximum de caractère];
cout<<"taper le nombres pour calculer son image"<<endl;
while(true)
{
cin>>a;

if (strlen(a)<6)
cout<<"taper un nombre plus long"<<endl;
else
break;
}
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
22 juil. 2004 à 11:58
ok merci ct la seconde reponse mais j'ai un probleme je dmande
de faire un calcule mais a est un char donc j'ai essayer de faire un transtypage

 #include 
 #include <fstream>

int main()
{
definni:
char a[10];
cout<<"taper le nombres pour calculer son image"<<endl;
while(true)
{
cin>>a;

if (strlen(a)<6)
cout<<"taper un nombre plus long"<<endl;
else
break;
}

definnicalc:
a =(int)a;

a=a*12;
cout<<"\nimage = "<>z;
}



"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
22 juil. 2004 à 18:43
sheorogath > a mon avis tu devrais plutot faire du c (ce que tu fais mais sans les cout et cin) et surtout acheter un livre de programmation ou au moins lire un cours online

a =(int)a; ??

tu cherche à affecter "a", c'est une grave erreur de programmation et surtout de comprehension, "a" est un tableau et un tableau ne peut etre une l-value par definition

et "(int)a" c'est son adresse, pas le contenu de la chaine de caractere

2 solutions :

int n;
char a[10];

...

sscanf( a, "%d", &n);

ou

n = atoi(a);

prefere atoi qui est plus performant que sscanf
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
23 juil. 2004 à 23:54
Sinon pour avoir la taile de la chaine on peut faire ca:

#include
#include <stdlib.h>
#include <stdio.h>

int main()
{
char a[]="123456789";
int length;
length=sizeof(a);
printf("la taille de la chaine est de %d caracteres\n",length);
system("pause");
}

en sortie on a length=10 vu que le caractere de fin de chaine est compté...
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
24 juil. 2004 à 00:47
length doit etre un size_t, et sizeof renvo la taille du tableau
pour avoir la taille de la chaine c'est strlen

typiquement recherche de l'offset du racactere 0 ('\0')

char s[]="okpolkp"
char *p = s;
unsigned n = 0;

while( *p++ ) n++;
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
24 juil. 2004 à 10:29
pour apprendre le c : je ne suis pas contre mais le c++ et assez compliquer comme ca et j'ai un boukin c++ mais ca faisait lontemps que je n'y avait pas toucher

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
24 juil. 2004 à 10:38
justement, le c est plus simple à apprendre que le c++, c'est pour ca que je te conseil de commencer par le c
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
26 juil. 2004 à 15:40
djl: c'est quoi un size_t? Ca sert seulement pour y mettre une taille? Parce qu'un entier fonctionne tres bien aussi....
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
26 juil. 2004 à 20:56
oui, c'est un type non signé (generalement un unsigned)
c'est fixé par le standard donc ca pourrais evité certains problemes
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
27 juil. 2004 à 16:09
ok merci!!
0
Rejoignez-nous