IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Chaines de caractères


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 123
    Points : 66
    Points
    66
    Par défaut Chaines de caractères
    Bonjour, est-ce que quelqu'un pourrait me donner le code de ces fonctions ? Je vais m'entrainer à les écrire mais j'aimerais une correction svp. J'ai un DS après-demain et on va me les demander :
    - strncpy(d,s,n) : copie des n premiers caractères de s vers d
    - strcat(d,s) : concaténation d'une chaine s sur une chaine d
    - strncat(d,s,n) : concaténation des n premiers caractères de s sur la chaine d
    - strcmp(ch1,ch2) : comparaison entre les deux chaines ch1 et ch2
    la fonction retournera un entier > 0 si ch1 > ch2
    retournera 0 si ch1 = ch2
    retournera un entier < 0 si ch1 < ch2
    (mais je ne comprends pas ce qu'on entend par comparaison, c'est la longueur ?)
    - strset(ch,c) : initialisation d'une chaine de caractère ch à l'aide du caractère c
    - strnset(ch,c,n) : initialisation des n premiers caractères de ch avec c
    - atoi(s) : conversion d'une chaine de caractères en son équivalent entier
    - itoa(n,s,base) : conversion d'un nombre entier n en une chaine de caractères s dans la base b
    Merci !

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonsoir alors pour la comparaison c'est comparé selon l'ordre lexicographique je crois bien, voir ici http://fr.wikipedia.org/wiki/Ordre_lexicographique,pour les fonctions fouillé elles ont stockés dans la librairie standard du C surement dans un dossier lib ,donc je suis pas expert c'est à vérifier cordialement

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Toutes les fonctions dont tu nous demandes le code sont disponibles dans le code source de la glibc (disponible ici). Cependant, je te déconseille fortement d'y mettre le nez tant que tu n'as pas un certain niveau.
    Pourquoi ? Car toutes ses méthodes sont censé être optimisées et adaptées à de multiples systèmes d'exploitation, ce qui rend le code un peu... "imbuvable" si l'on peut dire. (et je ne parle pas de la manière de présenter le code, qui peut dérouter quand on ne s'y connaît pas trop).

    Pour toutes les fonctions que tu nous demandes, je pense que tu peux trouver des exemples de code de-ci, de-là. Ce sont des exercices couramment faits et refait par les étudiants, donc souvent présent sur divers forum. Une fois que tu as compris la logique pour une, toutes les autres suivront car elles restent toutes relativement similaires.

    Quand on te demande une comparaison d'une chaîne de caractère, l'idée est de vérifier si les deux chaînes rentré en paramètre sont identique, c'est-à-dire possède les mêmes lettres au même endroit. Avec une simple boucle et une comparaison, tu peux t'en tirer.

    Concernant les conversions entier/chaîne de caractère et inversement, petite astuce, pense au code ascii pour tes comparaisons.

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 691
    Points : 30 988
    Points
    30 988
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Armays Voir le message
    (mais je ne comprends pas ce qu'on entend par comparaison, c'est la longueur ?)
    Bonjour

    Comparer deux chaines c'est indiquer si la première chaine est inférieure, égale ou supérieure à la seconde.
    La comparaison se fait sur chaque caractère des deux chaines pris deux à deux (le premier de la première avec le premier de la seconde puis le second de la première avec le second de la seconde puis le troisième de la première avec le troisième de la seconde) et etc jusqu'à ce qu'il y ait une différence. Comme les caractères (comme l'a dit archMqx.) ne sont que des valeurs ascii et que ces valeurs suivent l'ordre lexical, il est alors évident (j'espère) que 'a' est inférieur à 'b' et que 'b' est inférieur à 'c'. Donc "aaa" est inférieur à "aab" (et aussi à "ab" et aussi à "b"). En revanche "a" est inférieur à "aa" (parce que "a" c'est {'a', '\0'} et que "aa" c'est {'a', 'a', '\0'} et que le '\0' (second caractère de la première chaine de valeur ascii 0) est inférieur à 'a' (second caractère de la seconde chaine de valeur ascii 97).

    Donc voilà. Pour résumer suffit de ne pas oublier que tes caractères ne sont que des nombres et qu'une chaine de caractères c'est une suite de caractères terminée par le caractère '\0' (de valeur ascii 0).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    C'est un peu tard mais si tu avais fait quelques recherches, tu serais sûrement tombé sur mon article: http://franckh.developpez.com/articl...si/libcstring/
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Crypter une chaine de caractères
    Par Yabo dans le forum Réseau
    Réponses: 18
    Dernier message: 19/11/2004, 23h04
  3. Réponses: 9
    Dernier message: 17/01/2003, 11h45
  4. Lire Une Chaine De Caractères
    Par Jonathan_Korvitch dans le forum C
    Réponses: 12
    Dernier message: 07/01/2003, 05h37
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo