|
|
|
| langage c: calcul longueur d une chaine par djim |
vendredi 28 janvier 2005 à 15:36:56 |
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) |
déclare comme ça : char ptc[6]= "hello\o";
ça fonctionnera mieux.
|
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 |
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... |
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+ ¤ |
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(); } |
Bonjour,
j'ai pas compris le role du fonctions 'malloc' et pourquoi vous avez fait char* et non pas char merci d'avance |
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
|
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 |
| 25/02 22h13 | langage c liste chainee urgent please | Programmation | 25/02 22h54 | 2 |
| 18/05 09h36 | traitement de chaine langage C | Programmation | 18/05 14h17 | 1 |
| 13/03 18h06 | Chaîne très longue sur VBA Word | Bureautique | 14/03 10h34 | 1 |
| 28/02 16h04 | calculatrice langage C | Programmation | 01/03 16h34 | 2 |