jeani763
Messages postés8Date d'inscriptionjeudi 17 avril 2003StatutMembreDernière intervention22 janvier 2004
-
19 janv. 2004 à 09:47
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDerniè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;
}
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 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()
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 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
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 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...
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 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
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 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...
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
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 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?
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 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 ?
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 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++