> Tous les forumsAutres langages

 programmation des chaine de type car(C++)Sujet résolu
Statut du sujet : RESOLU Imprimer
 humanx
  Posté le 03/04/2008 @ 00:39  
 Petit astucien

71 Messages
Salut a tous les programmeurs
Voila je suis un étudiant débutant en informatique notre prof de programmation vient d’aborder le coure de la programmation des chaînes de type char en C++ est j’ai absolument rien comprit des se coure la.
Il nous a parlé de

Strlen(nom de chaine)
Strcpy (chaine2,chaine1)
Strcmp(chaine1.chaine2)
Et aussi strcat(chaine1,chaine2)

Svp si il y a quelqu’un qui peut me dire la signification de ses mot clé est quand et ou je peux mètre ses mot clé dans mes programme amateur pour aquérire la logique naisséser pour ne pas tombé sur des erreurs banal

Je vous en serait très reconnaissent de votre aide a mieux comprendre
Mercie de votre attention

J utilise le logiciel suivent (BORLAND C++)
 Afficher le profil de humanxEnvoyer un message privé à humanx
 
 
Publicité
 Draleg  Posté le 03/04/2008 à 09:08  
Petit astucien


658 Messages

Salut j'espere que ça t'aidera:

Strcmp(chaine1.chaine2); : Permet de comparer 2 chaine de caractere, cette fonction va donc analysé tout les caractere afin de savoir si les deux chaines sont identique. Elle retourne 0 si elles le sont, et un chiffre supérieur a 0 si elle ne le sont pas. (Remplace l' == qui n'est pas applicable dans les comparaison de chaines)

Strcpy (destination,source); : Permet de copier une chaine source dans une chaine destination. Tu peux lui ajouter une parametre qui signifiera le nombre de caractere que tu veux copier de la chaine source. (Remplace l' = qui n'est pas applicable pour la copie de chaines)

Strlen(chaine); : Retourne le nombre de caractere de la chaine.

Je te conseil ce ptit site: http://www.cplusplus.com/reference/clibrary/ qui referencie en grande partie des fonctions.



Modifié par Draleg le 03/04/2008 09:09
Afficher le profil de Draleg Voir la configuration de DralegEnvoyer un message privé à Draleg
 Revenir en haut de la page
 humanx  Posté le 03/04/2008 à 17:55  
Petit astucien

71 Messages
Draleg a écrit :

Salut j'espere que ça t'aidera:

Strcmp(chaine1.chaine2); : Permet de comparer 2 chaine de caractere, cette fonction va donc analysé tout les caractere afin de savoir si les deux chaines sont identique. Elle retourne 0 si elles le sont, et un chiffre supérieur a 0 si elle ne le sont pas. (Remplace l' == qui n'est pas applicable dans les comparaison de chaines)

Strcpy (destination,source); : Permet de copier une chaine source dans une chaine destination. Tu peux lui ajouter une parametre qui signifiera le nombre de caractere que tu veux copier de la chaine source. (Remplace l' = qui n'est pas applicable pour la copie de chaines)

Strlen(chaine); : Retourne le nombre de caractere de la chaine.

Je te conseil ce ptit site: http://www.cplusplus.com/reference/clibrary/ qui referencie en grande partie des fonctions.


Merci pour votre aide

Je vais lire le document cé bien expliqué

Merci

Afficher le profil de humanxEnvoyer un message privé à humanx
  Revenir en haut de la page
 s4t4n  Posté le 04/04/2008 à 22:23  
Petit astucien

76 Messages

Bonjour

En C++ ? tu est sur ?

Le type char devient presque inutile en C++, avec l object string tu peut faire a peu pres ce que tu veux et avec une simplicité deconcertante.

Afficher le profil de s4t4n Voir la configuration de s4t4nEnvoyer un message privé à s4t4n
 Revenir en haut de la page
 humanx  Posté le 05/04/2008 à 02:29  
Petit astucien

71 Messages
Oui je suis sur

Je veux essayer de comprendre le char sous c++

Car c’est la premier fois que je comprends pas un coure on c++

En plus de ça notre prof nous a chargé de faire des exercices qui semble banal a réalisé

Mais mon souci c’est que je ne sais pas comment mi prendre



Modifié par humanx le 05/04/2008 12:27
Afficher le profil de humanxEnvoyer un message privé à humanx
  Revenir en haut de la page
 s4t4n  Posté le 05/04/2008 à 14:43  
Petit astucien

76 Messages

regarde:

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. int main()
  5. {
  6. char pseudo[] = "satan";
  7. int taille = 0;
  8. char buffer[30];
  9. /* pour recuperer la taille du pseudo */
  10. taille = strlen(pseudo);
  11. /* affiche le nombre de caractere de satan */
  12. printf("taille de pseudo: %d\n", taille);
  13. /* copie pseudo dans buffer */
  14. strcpy(buffer, pseudo);
  15. printf("buffer: %s\n", buffer);
  16. /* ajoute buffer a pseudo */
  17. strcat(buffer, pseudo);
  18. printf("buffer + pseudo: %s\n", buffer);
  19. return 0;
  20. }
  21. se qui donne:
  22. napoleon@debian:~$ gcc -o test test.c
  23. napoleon@debian:~$ ./test
  24. taille: 5
  25. buffer: satan
  26. buffer + buffer: satansatan

Afficher le profil de s4t4n Voir la configuration de s4t4nEnvoyer un message privé à s4t4n
 Revenir en haut de la page
 humanx  Posté le 05/04/2008 à 16:05  
Petit astucien

71 Messages

merci

je vien de comprendre

Afficher le profil de humanxEnvoyer un message privé à humanx
  Revenir en haut de la page
 s4t4n  Posté le 05/04/2008 à 22:28  
Petit astucien

76 Messages

re

Par contre afin d eviter les buffer overflow tu devrais jamais te servir de strcpy

Je te laisse imaginer la sortie de ce morceau de code:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main()
  5. {
  6. char pseudo[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
  7. char buffer[10];
  8. strcpy(buffer, pseudo);
  9. return 0;
  10. }

tu na aucun moyen de controler la taille.

La solution c est strncpy

char * strncpy ( char * destination, const char * source, size_t num );

tu rajoute la taille a la fin simplement.

Afficher le profil de s4t4n Voir la configuration de s4t4nEnvoyer un message privé à s4t4n
 Revenir en haut de la page
 koala01  Posté le 19/05/2008 à 12:24  
Astucien

4715 Messages

Salut,

M'est avis que tu devrais eng ton prof pour encore oser parler des chaines "C style" (tableau de caractères terminé par un '\0') dans un cours de C++...

Du moins, tu devrais essayer (aussi gentiment que possible, étant donné que c'est lui qui a les rennes de tes résultats) de lui faire comprendre qu'il est largement déconseillé d'utiliser les fonctions et les possiblités issues du C quand une alternative existe en C++.

En effet, il faut prendre conscience du fait que, si une alternative propre au C++ à une possibilité issue du C existe, elle est globalement bien plus sécurisante à utiliser que la possibilité issue du C équivalente.

De plus, le C++ étant un langage orienté objet, dont l'objectif est aussi de permettre la réutilisation du code, il est particuliè!rement domage de se passer de ses atouts... surtout en période d'apprentissage: les mauvaises habitudes sont bien plus facile à prendre - et assez bizarement plus difficiles à perdre - que les bonnes et un apprentissage digne de se nom devrait quand meme essayer de donner les bonnes habitudes [clindoeil]

Enfin, bien que le C++ hérite directement du C et qu'il ne renie absolument pas ses origines, j'ai toujours considéré comme abherrant de partir du C pour essayer d'apprendre le C++, et, il se fait que, pour ce qui concerne la gestion de chaines de caractères, il existe une alternative de manière standard: la classe string, disponible dans l'espace de noms std par inclusion du fichier d'en-tête <string> et qui permet même d'obtenir une chaine de caractères C style en cas de besoin, tout en t'évitant les soucis dus à la gestion dynamique de la mémoire que l'on peut rencontrer en C.

@s4t4n>>Les codes que tu fournis sont peut être très beau et (comme je n'ai fait que les parcourir distraitement) peut être tout à fait justes en C, mais tu devrais aussi méditer sur ce que je viens d'écrire.

La principale preuve de ce que j'avance vient du fait que gcc va compiler les fichiers dont l'extension est *.c comme étant... des fichiers sources contenant du C et non du C++: Les extensions reconnues comme devant être compilées avec le compilateur C++ sont *.cpp, *.cxx et -sous unixoide uniquement (ou du moins les systèmes d'exploitations senibles à la casse pour les noms de fichiers, ce qui disqualifie windows) -*.C (en majuscule

En effet, les fichiers stdio.h, stdlib.h et string.h sont autant de fichiers d'en-tête issus du C dont l'usage n'est vraiment pas recommandé en C++.

Les deux premiers par exemple seraient avantageusement remplacés par le fichier <iostream> et, pour le dernier, reporte toi à ce qui est dit plus haut [clindoeil]

En effet, l'inclusion de <iostream> permet de disposer, entre autres, des classes cin pour les flux entrants (le clavier) et de cout pour les flux sortants (l'écran), toutes deux également disponibles dans l'espace de noms std.

Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 s4t4n  Posté le 20/05/2008 à 19:16  
Petit astucien

76 Messages

J aime bien le C++ mais je prefere le C, tu sais je n ai fais que repondre a ca question, le plus simplement possible et le plus clairement possible,strlen(), etc... bref chez moi les fonction qu il parlais c est du C et non du C++. D ailleur tu peut constater que je lui est parler aussi de l objet string.

Pour ce qui est de mediter sur ta reaction, c est deja mediter depuis longtemp, je suis sur une distribution ecrite en C, avec du Perl par ci par la et de l assembleur (pour le principale) donc le C++ m est inutile, bien que je l ai appris aussi pour pouvoir le lire correctement. Pour ce qui est de mes codes il sont juste je te rassure, et simplifier au maximum. je pense que la descritption des fonction est clair non?

Afficher le profil de s4t4n Voir la configuration de s4t4nEnvoyer un message privé à s4t4n
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte




Les sujets pertinents liés
Généalogique multimédia sur DVD ou Blu-Ray
Bloc note => fichier Bat ou Exe
programme gestion menu scolaire
programmation de jeux : un exemple en ligne
[C]Exo sur les graphes
Prière m'aider
Problème avec des structures en C
Optimisation, Recherche Opérationnelle: quel algo?
le publipostage via excel avec requete de choix..
Ouvrir des shells dans un shell script
Nouveau Forum Liberty Basic
Une idée (pas si) farfelue (que ca)
Principe de programmation d'un agenda
java:insérer lien dans champ texte
Qnx (ou Linux) avec MySql
Script shell
Quel language ?
 
Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !



 > Tous les forumsAutres langages

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page
Comme PC Astuces, mettez-vous au vert avec Ikoula !
Faites le choix d'un hébergeur acteur de l'environnement !