Probleme avec printf(%d)

jeani763 Messages postés 8 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 22 janvier 2004 - 19 janv. 2004 à 09:47
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 - 20 janv. 2004 à 21:25
Mon probleme est assez compliqué :

Je voudrais que mon programme compte le nombre de lettres que je lui donne ce qui ce fait grace a la fonction cin ; ensuite il me compte les caractères avec la fonction compte le probleme c que la fonction ne prend pas en compte les espaces par exemples :
bonjour tout le monde me donnera => bonjour

si vous pouviez m'aider ca serait cool!

#include 
#include <stdlib.h>

using namespace std;

long int compte(string kkk){
long int n=0;
while(kkk[n] != '\\0'){
n++;
}
return n;
}

int main(){
string message1;
cin>>message1;
long int i=0;
long int y=compte(message1);
while (i<y){
printf("%d\\n",message1[i]);
i++;
}
return 0;
}

17 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 janv. 2004 à 11:50
string message1;
cin>>message1;

déja, ca me semble bizarre, et chez moi ca ne marche pas
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 janv. 2004 à 12:13
euh non, en fait cin>>message1; marche bien, mais seulement si on fait #include<string>
ton problème c'est que la lecture s'arrête effactivement à l'espace donc tu dois soit faire un cin.getline mais avec un char*, plus avec une string (la tu peux choisir de délimiteur), ou bien écrire toi même une fonction qui lit une string dans un istream (la aussi tu peux choisir quant tu t'arrêtes de lire la string)
et puis ta fonction compte ne sert a rien puisque tu peux utiliser la méthode .length()
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
19 janv. 2004 à 17:32
voila encore bien typiquement l'exemple de qqun qui ce met au C++ sans avoir appris les bases du C...

un read sur 0 (entrer standard) puis une simpole boucle et un if aurais resolue le probleme, mais nan, utiliser des stream, des strings et autre c'est plus marrant....

vecchio, conseil lui de mettre chaques caracteres quil tappe dans une liste template et ensuite il creer un iterateur puis il parcour, pfff, encore mieux, il devrais le faire en javascript

ca m'enerve...
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 janv. 2004 à 18:06
sebseb42 propose ta solution
0

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

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 janv. 2004 à 18:10
Voici la mienne:

string lit_chaine(istream& in)
{
string s;
char ch;
while(cin.get(ch))
s.push_back(ch);
return s;
}
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
20 janv. 2004 à 02:10
"sebseb42 propose ta solution"

je l'ai deja proposer dans mon poste juste avant, relis mieux ;)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 janv. 2004 à 09:25
oui j'ai vu mais je ne vois pas ce qu'est ton read et puis si tu utilise un pointeur il faut connaitre à l'avance la longueur du texte à lire
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
20 janv. 2004 à 10:14
qui a parler de pointeur ? j'aurais utiliser une tableau de char...

ne sais tu donc pas que faire un read sur le file descriptor 0 reviens a lire l'activiter du clavier ??

si vraiment tu l'ignore, c'est quelque peu pitoyable, et montre belle et bien les degats que peuvent produire un apprentissage du C++ sans passer par les bases...
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 janv. 2004 à 11:28
excuse moi, c'est juste que je n'ai jamais utilisé la fonction read puisque je pensais qu'elle était réservé au système UNIX, quand j'ai commencé le C (puisque j'ai commencé par là ne t'en déplaise), j'ai appris à utiliser scanf.
Pour ce qui est des pointeurs et des tableaux, je l'étais permis de faire l'amalgame entre les deux
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
20 janv. 2004 à 12:09
"je l'étais permis de faire l'amalgame entre les deux"

fait attention, un tableau est un pointeur qui pointe forcement quelque part, alors que le pointeur, non.

si tu as fait du C sous UNIX alors tu doit connaitre les file descriptor, et si tu ne les connais pas et que tu n'as jamais utiliser que scanf, alors je te plain, et sans vouloir t'offenser je pense que ta formation est a refaire...

int var;

while (1)
{
scanf("%d", &var);
printf("vous avez tappé : %d\n", var);
}

tappe bonjour et tu vera a quel point scanf est performante, bref, si tu n'as jamais utiliser read, j'imagine que tu ne connais pas write ni open et close, et dans ce cas il serais bien temps de t'y mettre
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 janv. 2004 à 12:51
comme tu l'as peut-être deviné je n'ai jamais eu de formation en C, et je t'assure que je n'ai jamais utilisé aucunede ces fonctions, mais je veux bien te croire quand tu dis qu'elle sont fondamentales.
J'ai appris le C grace au livre Le langage C de Kernighan et Ritchie qui s'auto-proclame la référence pour tout utilisateur de ce langage. Le truc c'est que ces fonctions dont tu me parle ne sont présentées que dans le chapitre "L'interface avec le système UNIX" que je n'ai pas lu puisque je ne programme pas en C sous UNIX. Peut-être me conseillerais tu un meilleur moyen d'apprendre le C?
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
20 janv. 2004 à 19:55
oui, en lisant quand meme ce chapitre car il traite de la lib standard, et qui dit standard, dit que tu l'as aussi sous windows

de plus je ne crois pas que ce soit messieurs Kernighan et Ritchie qui ton suggerer d'utiliser des CString, des streams et autres saloperies a tout va ?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 janv. 2004 à 20:12
Non ca c'est BruNews qui me l'a conseillé, surtout les CString
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 janv. 2004 à 20:19
J'aimerais te poser une question: qu'est ce que tu pense d'un langage comme Java dont beaucoup disent le plus grand bien?
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
20 janv. 2004 à 20:23
Java c'est tres bien, car il est fait de maniere a ce qu'on est pas a ce preoccuper de ce quil y a derriere...

ce qui est bien avec le C, c'est que tu sais precisement ce que tu fait, et je comprend que des gens voulais creer une couche d'abstraction plus haute, mais le probleme c'est qu'ils sont aller trop loin et on creer le C++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 janv. 2004 à 20:28
avec l'assembleur tu sais encore plus ce que tu fais
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
20 janv. 2004 à 21:25
t'es un marginal toi ? tout dans l'exces, asm ou C++ pousser a l'abus...

il t'es jamais venu a l'esprit quil y avais un truc entre les 2 ? :P
0
Rejoignez-nous