KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Mercredi 14 mai 2008 - 05:34:07

Langage c: calcul longueur d une chaine

Rechercher : dans
langage c: calcul longueur d une chaine
par djim
 Fil de Discussions
Statut : Non résolu
vendredi 28 janvier 2005 à 15:36:56
salut!

je dois calculer la longueur d'une chaine de caractere

est ce ke ceci est bon :

#include <stdio.h>
#include <conio.h>

char ptc[6]= "hello";
int i;

void main(void)
{


i = 0;
while(ptc[i] != '\0')
{
i++;
}
return i;

printf("votre chaine de caractere a une longueur de %d caracteres",i);

}


merci pour votre aide!
Répondre à djim  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Ravachol, le vendredi 28 janvier 2005 à 15:57:42 Fil de Discussions
Salut,
Sinon il y a la fonction "strlen" dispo en incluant "string.h".
Dans ton cas tu auras un truc dans ce genre:
i = strlen(ptc); 

Ton return i me paraît bizarrement placé , non ?

A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
Répondre à Ravachol

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Joshua, le vendredi 28 janvier 2005 à 16:39:39 Fil de Discussions
déclare comme ça : char ptc[6]= "hello\o";
ça fonctionnera mieux.
Répondre à Joshua

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Ravachol, le vendredi 28 janvier 2005 à 17:23:19 Fil de Discussions
Salut,
Il me semble que justement l'une des propriétés des constantes chaines en C est que le compilateur place lui même le caractère de code nul en mémoire après le dernier caractère.
Donc char ptc[6] = "hello" ne posera aucun problème.
A moins que je ne fasse fausse route.

A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
Répondre à Ravachol

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par djim, le vendredi 28 janvier 2005 à 18:51:22 Fil de Discussions
merci a vous de m'avoir repondu

j'ai une autre question

je dois ecrire une fonction" int longueur1 (char *ptc) ki calcule la longueur de la chaine pointer par ptc.

que donnerai cette " algorithme"

merci pour votre aide
Répondre à djim

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par etienne, le vendredi 28 janvier 2005 à 23:12:43 Fil de Discussions
Ta fonction serait inutile, parce que si on la compare le prototype de la fonction strlen avec celle de ta fonction ben...

int strlen(char const *chaine);
int longueur1(char *ptc);

ben comme tu vois c'est la meme chose... alors ca serait inutile...
pourquoi réinventé la roue quand on l'a déja...
Répondre à etienne

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par blurk, le dimanche 30 janvier 2005 à 13:16:11 Fil de Discussions
salut, si je peux me permetre
c'est peut être inutile mais ça fonctionne
c'est peut être un cas d'école ?
si ça peut éviter d'utilser string.h ou stdio.h
ça rend l'exécutable plus petit. C'est parfois utile dans les systèmes embarqués. c'est rare, mais ça tue pas le chien.
a+ ¤
Répondre à blurk

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par fenomen, le lundi 31 janvier 2005 à 18:00:14 Fil de Discussions
main()
{char *car;
car = (char*)malloc(27*sizeof(char));
printf("Entrez un mot: \n");
scanf("%s",car);
printf("le nombre de caracteres est : %d",strlen(car));
getch();
}
Répondre à fenomen

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par siiimo, le vendredi 26 octobre 2007 à 11:37:23 Fil de Discussions
Bonjour,
j'ai pas compris le role du fonctions 'malloc' et pourquoi vous avez fait char* et non pas char
merci d'avance
Répondre à siiimo

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par lami20j, le vendredi 26 octobre 2007 à 11:42:12 Fil de Discussions
Salut,

avec char on peut declarer un tableu de caractères qui aura un espace mémoire attribué

si un utilise un pointeur de caractère char * avec la commande malloc nous pouvons attribué dynamiquement de la mémoire

dans le cas
car = (char*)malloc(27*sizeof(char));

si sizeof char donne 1 octet alors on aura un un espace alloué de 27 octets
une fois fini le travail avec car on peut liberer la mémoire avec free

lami20j
Répondre à lami20j

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par dreams07, le vendredi 26 octobre 2007 à 11:53:37 Fil de Discussions
Bonjour,
le programme est correct mais il y a probleme c kil ne pt pa calculer les espaces entre les mots
Répondre à dreams07

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par c-moi, le vendredi 26 octobre 2007 à 15:28:27 Fil de Discussions 
Bonjour,

Pour commenter le code proposé par fenomen je ne vois pas l'utilité du malloc.
Le malloc est utilisé pour une allocation dynamique, Or ici c'est clairement du statique : la taille du tableau est connue à l'avance.

Plutôt que de faire
char *car;
car = (char*)malloc(27*sizeof(char)); 


Je serai d'avis de directement faire ceci :

#define BUF_MAX_SIZE 27

void
main()
{
char car[BUF_MAX_SIZE];
/* Mise à 0 */
memset(&car, 0, BUF_MAX_SIZE);

printf("Entrez un mot: \n");
scanf("%s",car);
printf("le nombre de caracteres est : %d",strlen(car));
getch();
}



memset permet de s'assurer que tout le tableau contient des 0, ce qui permet d'être certain que notre chaine de caractère copie grâce à scanf se termine par un '\0'
Après, je pense que scanf() termine la chaine de caractère copiée par un '\0' donc le memset n'est pas obligatoire... a priori.


Maintenant, reproduire strlen n'est pas des plus compliqués, à partir du moment où l'on sait faire des itérations sur un tableau et que l'on sait aussi par quoi se termine une chaine de caractère.


Bon courage,

c-moi
Répondre à c-moi
Discussions pertinentes trouvées dans le forum
25/02 22h13langage c liste chainee urgent pleaseProgrammation25/02 22h542
18/05 09h36traitement de chaine langage CProgrammation18/05 14h171
13/03 18h06Chaîne très longue sur VBA WordBureautique14/03 10h341
28/02 16h04calculatrice langage CProgrammation01/03 16h342
Plus de discussions sur « langage c: calcul longueur d une chaine » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide