Comptage chaine de caractére

Bishoo91 -  
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je dois saisir une 1ère chaîne de caractères, calculer sa longueur et afficher le résultat.
Dans mon exercice on suppose que la librairie string.h n’existe pas. Interdit donc ici d’utiliser strlen, strcmp,
strcpy etc…

J'essaie d'utiliser les pointeur pour compter la chaine de caractère mais sans sucés
Voici mon exercice
#include <stdio.h>
#include <conio.h>
#include <math.h>

void main(void)
{
char mot1[20];
char *pc;
pc = &mot1[20];
int j=0,i=0;

printf("Entrez une chaine de carateres : \n");
scanf("%s", &mot1);

while(pc[i] != '\0')
{
j++;
}

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

}

Je n'arrive pas à sortir de ma boucle WHILE.
Merci de vos réponse
Cordialement
A voir également:

5 réponses

chuka Messages postés 980 Statut Membre 378
 
Salut,
#include <stdio.h>
#include <conio.h>
#include <math.h>

void main(void)
{
char mot1[20];
char *pc;//A quoi sert cette variable???
pc = &mot1[20];
int j=0;

printf("Entrez une chaine de carateres : \n");
scanf("%s", &mot1);

while(mot[j++] != '\0');

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

}
0
Bishoo91
 
Bonjour,

char *pc;//A quoi sert cette variable???
La variable sert à déclarer pc comme le pointeur????????

Mes bases en pointeur sont très limitées
0
chuka Messages postés 980 Statut Membre 378
 
Tu en n'as pas besoin...char mot1[20] est un pointeur!!
Avec le code au post 1, tu devrais avoir le resultat voulu!!
@+
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Non, char mot1[20] est un tableau. Un tableau n'est pas un pointeur.
a+0 est un pointeur par contre.
0
chuka Messages postés 980 Statut Membre 378
 
Effectivement, en toute rigueur..j'ai été pris par la patrouille!!;))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Ce que je comprends pas c'est : pc = &mot1[20];
Pourquoi faire pointer pc après l'allocation de mot au sein de la pile ?

Attention aussi, le prototype de main sans argument est int main(void). Il renvoie un int et non un void.

Sinon pour la version avec pointeur, on écrirait plutôt :
#include <stdio.h>

int main(void) {
    char mot1[20];
    char *pc=mot1;
    size_t len;

    printf("mot1=");
    fflush(stdout);
    scanf("%19s",mot1); /*attention à ne pas mettre d'esperluette devant mot1*/

    while(*(pc++));
    len=pc-mot1-1;

    printf("la taille est de %d caractères\n",len);

    return 0;
}


Dans ta version, on voit que tu utilises un pointeur, mais il ne sert à pas grand chose puisque tu pourrais utiliser le tableau mot1.

Cdlt,
0