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 :

probleme de reconnaissance de l'espace dans une chaine de caractéres


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Par défaut probleme de reconnaissance de l'espace dans une chaine de caractéres
    bonjour à tous,

    voilà mon probléme, je dois faire un petit programme en c afin de reconnaitre combien de caracteres l'utilisateur rentre dans sa chaine. Le truc tout simple sans strlen. Donc jusque la aucun probleme, sauf que j'ai voulu faire un petit programme qui savait reconnaitre d'autre caractere (genre l'apostrophe). Et la survient le hic, car impossible de reconnaitre l'espace.
    Je passe par une boucle en for avec un compteur afin de relire la chaine et de comptabiliser le nombre de caracteres, avec les condition de l'apostrophe dans un if et l'espace dans un else if. Tout marche tres bien sauf que des qu'il arrive a un espace dans la chaine de caractere, il arrete de comptabiliser et sort de la boucle. La, j'avou que je peine. C'est sans doute tres simple pour la plupart d'entre vous, mais j'admets que j'aimerai qu'on m'explique comment pallier à se probleme de l'espace. Je remercie par avance celui ou ceux qui voudront bien me dépatouiller.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    dans l'absolu on ne peut rien dire..

    Poste le code qui fait défaut stp...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Par défaut
    en te remerciant par avance souviron34
    voici mon code.
    sois indulgent, je débute


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #include<stdlib.h>
    #include<stdio.h>
     
     
    int main()
    {
    	char tab[100]={0};//declaration et initialisation du tableau de type char
    	int i=0,cpt=0;//declaration et initialisation d'un indice et d'un compteur
     
    	printf ("\t\t************************************************************\n");			/*******************************/
    	printf ("\t\t********* Affichage de la longueur d'une chaine ************\n");			/*********presentation*********/
    	printf ("\t\t*********          sans la fonction strlen      ************\n");			/*****************************/
    	printf ("\t\t************************************************************\n\n\n");		/****************************/
    	printf ("Veuillez rentrer une chaine de caracteres : \n\n");//appel a l'utilisateur
    	scanf ("%s",&tab);//sauvegarde de la chaine dans le tableau
     
    	for (i,cpt;i<tab[i];i++)//boucle pour relire le tableau
    	{
    		if (tab[i]='39')
    		{
    		cpt++;//incrementation de 1 au compteur
    		}
    		else if (tab[i]='32')
    		{
    			cpt++;
    		}
    		else
    			cpt++;
    	}
    	printf ("\nla chaine possede %d caracteres.\n",cpt);//restitution du nombre de caractere par le compteur cpt
     
    	return 0;
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Par défaut
    je ne demande pas une solution, juste un aiguillage.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    c'est parce que tu as fait un scanf("%s", qui s'arrête à l'espace

    De toutes façons scanf est déconseillée ..

    Utilise (si tu as le droit) fgets(buf, taille, stdin)

    Ensuite il est peu recommandé de faire varier plusieurs varaibles différentes dans le lancement d'une boucle

    Enfin le test sur la fin d'une chaine est normalement caractère = '\0'

    Remarque :

    tu devrait utiliser la balise CODE (le signe # au dessus du message)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Par défaut
    je te remerci de m'avoir accordé du temps et je tiens a souligner que je suis impressionner qu'il y a des gens comme toi pour une aide aussi rapide. maintenant, je vais tenter de resoudre mon probleme.

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    en plus une erreur que je n'avais pas remarqué quand c'était en texte simple :

    la comparaison en C s'écrit avec == et non avec = (= est une assignation)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Caractère espace dans une chaine de caractère
    Par 8itit dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 20/04/2010, 14h09
  2. [MySQL] Espace dans une chaine de caractère
    Par jeremy2011 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/04/2010, 08h34
  3. calculer le nombre d'espaces dans une chaine de caractère
    Par tang le breton dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/06/2009, 10h45
  4. Affichage d'espaces dans une chaine de caractères
    Par MistyMan dans le forum Langage
    Réponses: 4
    Dernier message: 15/02/2009, 13h27
  5. Supprimer les espaces dans une chaine de caractères
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 23/07/2007, 22h24

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