[C/C++]Taille chaine caractère [Résolu]

Signaler
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008
-
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008
-
Salut,

Je n'arrive pas à définir la taille de ma chaine de caractère à l'aide d'une variable (nb).
CHAR CHAINE[NB];

En fait il faut que je limite la taille d'un mot que je prend dans une liste, mais cette taille varie en fonction de l'utilisateur.

Comment puis je faire ???

10 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
"Parce que si je rentre: ordi et que le mot de la liste est ordinateur => ça me le trouve pas."

utilise strstr

mais le probleme c'est que tu n'a pas bien compris les chaines, la taille alloué n'importe pas
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
alloc dynamique par malloc ou new.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

Je voit pas comment faire ensuite
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
tu saisie dans un tableau temporaire de grande taille et tu alloue (malloc) ensuite une chaine (char*) en fonction de sa taille (strlen) et tu copie (strcpy)

ou alors tu fais ca en c++ (std::string)
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

J'ai fait ça :

taille=3;

point = (char *)malloc(taille*sizeof(char)+1);

SendMessage(hCtrl,LB_GETTEXT,line, (LPARAM)(LPTSTR)point);

Mais les valeurs retournées par point ne sont pas limitées en nombre de charactères.
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
point = (char *)malloc(taille*sizeof(char)+1);

>

point = malloc(taille + 1);

point pointe sur un bufffer de 4 octets, tu copie quoi et comment ?
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

Je copie une liste ligne par ligne pour faire une recherche.

Je veux faire une chaine de taille variable pour que même si le mot rentré n'est pas exact ça le trouve quand même.

Parce que si je rentre: ordi et que le mot de la liste est ordinateur => ça me le trouve pas.

Si vous avez une idée meilleure, elle est la bienvenue.

Mon code:

//On récupère un HWND sur le controle auquel on va récupérer les mots à vérifier
hCtrl=GetDlgItem(Dlg,IDC_LIST);

//Pour l'instant définit une taille de 3
taille=3;

// Allocation mémoire pour une chaîne de "taille" caractères.
point = (char *)malloc(taille*sizeof(char)+1);

//On récupère le nom du produit de la ligne "line"
SendMessage(hCtrl,LB_GETTEXT,line, (LPARAM)(LPTSTR)point);

//On récupère un HWND sur le controle auquel on va envoyer les noms des produits vérifiés
hCtrl=GetDlgItem(Dlg,IDC_RESULT);
//On envoie les noms des produits
SendMessage(hCtrl,LB_ADDSTRING,NULL, (LPARAM)(LPTSTR)point);

Pour l'instant j'envoie le nom des produits vérifiés pour voir si leur taille se limite ou pas, et là ça marche pas...
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

SVP j'ai vraiment besoin de ça pour finir mon programme.

Si quelqu'un pouvait m'aider une dernière fois ça serait sympa.
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

Ok je vais faire des recherches sur strstr.

Merci
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

C'est bon j'ai réussi !!!
Merci et @++++++.