Retourner aux forums || Retourner au forum Programmation.c
Programmation.c : Comparaison de la longueur de 2 chaines de carateres
Posté par Juke (Jabber id, page perso, ) le 23 décembre 2004
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char * chaine1;
char * chaine2;
char *chaine3;
chaine1 = "http://ad.fr.doubleclick.net/796615/1122_728x90actu_vis_yahoo.jpg(...)";
chaine2 = "http://ad.fr.doubleclick.net/796615/728x90actu_tit_yahoo.gif(...)";
chaine3 = malloc(sizeof chaine1);
if (sizeof chaine1 > sizeof chaine2)
{
chaine3 = malloc(sizeof chaine1);
}
else
{
chaine3 = malloc(sizeof chaine2);
}
return 0;
}
> Lire le message (13 commentaires, moyenne: 2,2).
string.h
dans string.h t'as une fonction qui s'appelle strlen : string length, ca va te mesurer la longeur de ta chaine (moins le dernier caractere qui est nul, donc n'oublie pas de faire malloc(strlen(chaine1)+1) )
-
[^]Re: string.h
Posté par Juke (Jabber id, page perso, ) le 23/12/2004 à 17:42. (lien). Évalué à 1.oui j'y avais penser mais en fait je ne sais pas si ça change quelque chose.
En y reflechissant, je pense que ma question de comparaison de chaine est inutile.-
[^]Re: string.h
Posté par durandal () le 23/12/2004 à 18:06. (lien). Évalué à 6.Tu te trompes sur le sens de sizeof : dans ton cas ça vaut la taille de tes pointeurs vers char, c'est-à-dire 4 sur les processeurs Intel 32 bits, ce qui n'a rien à voir avec la longueur de la chaîne pointée (et donc ton test sizeof chaine1 > sizeof chaine2 serait toujours faux vu que les deux ont la même taille). Si tu avais char chaine1[] = "Bonjour"; tu aurais sizeof chaine1 == 8.
-
[^]Re: string.h
-
-
-
[^]Re: string.h
Posté par Zouff () le 23/12/2004 à 20:18. (lien). Évalué à 0.En fait, dans string.h, il y a même une fonction pour comparer deux chaines : strcmp(char *, char *)
il renvoie :
un nombre négatif si longueur 1 < longueur 2,
0 si longueur 1= longueur 2
un nombre positif si longueur 1 > longueur 2-
[^]Re: string.h
Posté par Juke (Jabber id, page perso, ) le 23/12/2004 à 20:43. (lien). Évalué à 5.il me semble que ça ne compare pas la longueur mais l'ordre lexicographique.
-
[^]Re: string.h
Posté par Sylvain Rampacek (Jabber id, page perso, ) le 23/12/2004 à 21:14. (lien). Évalué à 0.en fait, ça compare les deux...
mais la première chose que fait cette fonction est déjà de comparer les longueurs des chaînes...
(si une chaîne est plus petite que l'autre, alors, la plus petite est la première dans l'ordre lexicographique).-
[^]Re: string.h
Posté par durandal () le 23/12/2004 à 21:51. (lien). Évalué à 6.strcmp compare les caractères un par un et renvoie la différence s'ils sont différents, elle ne compare pas les longueurs des chaînes.
Ce que tu dis est valable si les deux chaînes commencent pareil (pour "toto" et "tototo" ça renverra un entier négatif), mais pour "totu" et "tototo" ça renverra un entier positif ('u' > 'o') alors que "totu" est plus court que "tototo".
-
-
-
Et le FLM dans tout ca?
2 mallocs, et pas de free?
Mais ou va le monde?
--
GiGa
Membre du FLM
-
[^]Re: Et le FLM dans tout ca?
Posté par Juke (Jabber id, page perso, ) le 25/12/2004 à 18:13. (lien). Évalué à 1.Ais je besoin de desolouer la memoire ou est ce que le systeme d'exploitation le fera tout seul à la fin du programme ?
-
[^]Re: Et le FLM dans tout ca?
Posté par Jean-Philippe Garcia Ballester (Jabber id, page perso, ) le 25/12/2004 à 21:04. (lien). Évalué à 1.Il me semble que le systeme le fait tout seul a la fin, mais c'est pas tres beau de ne pas la liberer, surtout si tu fait beaucoup d'allocations. (genre dans un jeu ou tu ajoutes et supprimes des elements dans une liste a chaque frame...)
-
[^]Re: Et le FLM dans tout ca?
Posté par Juke (Jabber id, page perso, ) le 25/12/2004 à 21:40. (lien). Évalué à 1.Merci de l'explication,
Mais si j'utilise l'allocation jusqu'a la fin du programme, est t'il utile de quand meme la liberer ?
C'est quoi le FLM.-
[^]Re: Et le FLM dans tout ca?
Posté par Jean-Philippe Garcia Ballester (Jabber id, page perso, ) le 27/12/2004 à 22:32. (lien). Évalué à 1.C'est plus propre de la liberer, et ca coute rien. (et puis ca fait plaisir a valgrind).
Le FLM, c'est le Front de Liberation de la Memoire.
-
-
-
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.