Rechercher : dans
Par :

Calcul de la longueur d'une chaîne en c

Dernière réponse le 19 mar 2007 à 19:31:49 philippe, le 16 mar 2007 à 07:52:54 
 Signaler ce message aux modérateurs

Bonjour,
il faut que je calcul la longueur d'une chaîne de caractére en langage c en utilisant la fonction 'strlen'

#include<stdio.h>
#include<string.h>

main()
{
char *string;
printf("entrez une chaine de caractére:\n);fflush(stdout);
scanf("%c",&string);
printf("la chaîne est composée de %d caractéres."strlen (string));
}

pourriez vous svp m'aider à trouver mon erreur?
merci d'avance

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « calcul de la longueur d'une chaîne en c » dans :
Liste simplement chaînée VoirLISTES SIMPLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes chaînées A. Initialisation B. Insertion d'un élément dans la liste 1. Insertion...
Liste doublement chaînée VoirLISTES DOUBLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes doublement chaînées A. Initialisation B. Insertion d'un élément dans la...
Les templates en C++ VoirIntroduction Avantages Inconvénients Quand utiliser des templates ? Que dois-je mettre dans les .hpp et dans les .cpp ? Convention de notations Quelques templates célèbres STL BGL Premiers pas Spécifications de templates Template par...
Langage C - Les listes chaînées VoirLa notion de structure autoréferrentielle Une structure autoréferrentielle (parfois appelée structure récursive) correspond à une structure dont au moins un des champs contient un pointeur vers une structure de même type. De cette façon on crée...
Javascript - L'objet String VoirLes particularités de l'objet String string est un mot anglais qui signifie "chaîne", il s'agit en fait de chaîne de caractères. L'objet String est un objet qui contient un certain nombre de propriétés et de méthodes permettant la manipulation...
Langage C++ - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...

1

lefoufighter, le 16 mar 2007 à 08:56:33

Bonjour,
Un bon petit exercice pour se réveiller :
Voila ma solution (et qui fonctionne en +) :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){
char *chaine;
printf("entrez une chaine de caractére: \n");
scanf("%s",chaine);
printf("la chaîne est composée de %d caractéres \n", strlen(chaine));
return EXIT_SUCCESS;
}


Voila j'espere que ca t'aidera, bye

Il n'existe que deux choses infinies, l'univers et la bêtise humaine...
mais pour l'univers, je n'ai pas de certitude absolue. <Albert Einstein>

Répondre à lefoufighter

4

lami20j, le 17 mar 2007 à 11:16:19

Salut,

Voila ma solution (et qui fonctionne en +) :
mais non, ta solution ne fonctionne pas, il lui manque l'allocation de la mémoire pour ton pointeur chaine

A l'exécution il y a sûrement un Erreur de segmentation lami20j

Répondre à lami20j

2

Char Snipeur, le 16 mar 2007 à 14:04:32

Bien, vu.
en fait phillipe, ton string est déjà un pointeur, il ne sert à rien de passer son adresse par & dans scanf Salutation !
Char Snipeur

Répondre à Char Snipeur

3

phil23, le 17 mar 2007 à 10:45:23

Salut,
merci pour ton aide mais je suis désolé j'ai essayé et ça ne fonctionne toujours pas.
ps:je compile en c avec devc++peut être un rapport avec le logiciel?

Répondre à phil23

5

ekra, le 17 mar 2007 à 11:23:46

ça ne fonctionne toujours pas.
Quels sorte d'erreur ?
Compilation - link - execution ? Je pense que ça nous aiderait.

J'espère que tu as alloué comme l'a dit lami20j. GPG Key ID = 5518CFC7

Répondre à ekra

6

pépereF, le 18 mar 2007 à 16:28:50

C'est une erreur d'execution

Répondre à pépereF

7

lami20j, le 18 mar 2007 à 16:44:14

Salut,

as-tu alloué de la mémoire pour chaine?
Par exemple

chaine = (char *) malloc(1000 * sizeof(char));
Tu peux afficher l'erreur :-), aussi ton code actuel
On comprendra mieux ce qui ne vas pas. lami20j

Répondre à lami20j

8

pépereF, le 18 mar 2007 à 17:34:59

Salut,
Merci, ça marche mais je n'arrive pas a rentrer d'espace dans la chaine de caractéres

Répondre à pépereF

9

pépereF, le 18 mar 2007 à 17:38:33

Voici mon code:
#include<stdio.h>
#include<string.h>

main()
{
char*chaine;
chaine = (char *) malloc(100* sizeof(char));
printf("Entrez une chaine de caractere:\n");
scanf("%s",chaine);
printf("La chaine saisie est composee de %d caractere.",strlen(chaine));
scanf("%d",chaine);
}

Répondre à pépereF

10

ekra, le 18 mar 2007 à 18:44:53

Normalement les espaces sont bien comptés.

scanf("%d",chaine);
Qu'as tu voulu faire ici ??? chaine n'est pas un entier... GPG Key ID = 5518CFC7

Répondre à ekra

11

lami20j, le 18 mar 2007 à 20:06:38
  • +1

Salut,

Avec ce code ça marche

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int
main ()
{
  char *chaine;
  chaine = (char *) malloc (100 * sizeof (char));
  printf ("Entrez une chaine de caractere:\n");
  fgets (chaine, 100, stdin);
  printf ("La chaine saisie est composee de %ld caractere.\n",
                  strlen (chaine) - 1);

  return 0;
}

résultat
~/trash$ ./ccm
Entrez une chaine de caractere:
une chaine de caracteres
La chaine saisie est composee de 24 caractere.
mais avec celui là non
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int
main ()
{
  char *chaine;
  chaine = (char *) malloc (100 * sizeof (char));
  printf ("Entrez une chaine de caractere:\n");
  scanf("%s",chaine);
  printf ("La chaine saisie est composee de %ld caractere.\n",
                  strlen (chaine));

  return 0;
}
résultat
~/trash$ ./ccm
Entrez une chaine de caractere:
une chaine de caractères
La chaine saisie est composee de 3 caractere.
Pourquoi? lami20j

Répondre à lami20j

12

ekra, le 18 mar 2007 à 20:27:19

Tu as raison, j'avais déjà oublié !

http://www.cplusplus.com/reference/clibrary/cstdio/scanf.htm­l

String of characters. This will read subsequent characters until a whitespace is found (whitespace characters are considered to be blank, newline and tab). GPG Key ID = 5518CFC7

Répondre à ekra

13

 pépereF, le 19 mar 2007 à 19:31:49

Merci, génial ça marche

Répondre à pépereF