Accueil > Forum > > > > fonction qui retourne un char
fonction qui retourne un char
jeudi 21 août 2003 à 22:10:12 |
fonction qui retourne un char

glipper
|
Bonjour, Voila, j'ai un probleme avec une fonction qui doit retourner une chaine de caractere ! J'ai compris qu'elle ne pouvait pas renvoyer la chaine, mais qu'il fallait lui faire renvoyer un pointeur... alors c'est ce que j'ai fait :) mais ca marche pas :( Il me renvoi n'importe quoi : "ÖÕw" Quelqu'un saurait ce qui ne va pas ? Et si je pouvais aussi avoir une explication ce serait bien :) Merci [b] ... char *Date; Date = Mot(DateHeure, 1); SetDlgItemTextA (hWnd,IDC_DATE, Date); ... char *Mot(char chaine[200], int NMot) { char MonText[50]; ... return MonText; } [\b] Glipper
|
|
jeudi 21 août 2003 à 22:23:40 |
Re : fonction qui retourne un char

anthraxx
|
C simple: quand tu declare un tableau de caracteres dans une fonction, il ne subsite que dans les limites de la fonction.
Explication:
char *Mot(char chaine[200], int NMot) { char MonText[50]; // ceci declare 50 octets plus un pointeur vers ces 50 octets ... return MonText; // tu renvoies le pointeur } // mais ici, les 50 octets sont effacés! le pointeur ne pointe plus vers kwak ce soit
tu devrais plutot faire une fonction avec la chaine a retourner en argument: c'est a dire: void Mot(const char chaine[200],int NMot,char *resultat);
et l'appeler comme suit: char date[50]; Mot(DateHeure, 1,date); SetDlgItemTextA (hWnd,IDC_DATE, date);
j'espere m'etre expliq; --anthraxx
|
|
jeudi 21 août 2003 à 22:35:09 |
Re : fonction qui retourne un char

glipper
|
Ok, ca marche ! Merci bcp Mais je suis quand meme un peu décu qu'il n'y ai pas eu une solution plus simple... Il resterait quelques améliorations a faire au C/C++ loool GLipper
------------------------------- Réponse au message : -------------------------------
> C simple: quand tu declare un tableau de caracteres dans une fonction, il ne subsite que dans les limites de la fonction. > > Explication: > > char *Mot(char chaine[200], int NMot) > { > char MonText[50]; // ceci declare 50 octets plus un pointeur vers ces 50 octets > ... > return MonText; // tu renvoies le pointeur > } // mais ici, les 50 octets sont effacés! le pointeur ne pointe plus vers kwak ce soit > > tu devrais plutot faire une fonction avec la chaine a retourner en argument: > c'est a dire: > void Mot(const char chaine[200],int NMot,char *resultat); > > et l'appeler comme suit: > char date[50]; > Mot(DateHeure, 1,date); > SetDlgItemTextA (hWnd,IDC_DATE, date); > > j'espere m'etre expliq; > --anthraxx
|
|
jeudi 21 août 2003 à 23:37:10 |
Re : fonction qui retourne un char

BruNews
|
NON l'efficacite et la simplicite vont rarement ensemble, pour cela c'est vb ou java mais les performances ne seront plus au rdv. BruNews, ciao...
------------------------------- Réponse au message : -------------------------------
> Ok, ca marche ! Merci bcp > Mais je suis quand meme un peu décu qu'il n'y ai pas eu une solution plus simple... Il resterait quelques améliorations a faire au C/C++ loool > GLipper > > > > ------------------------------- > Réponse au message : > ------------------------------- > > > C simple: quand tu declare un tableau de caracteres dans une fonction, il ne subsite que dans les limites de la fonction. > > > > Explication: > > > > char *Mot(char chaine[200], int NMot) > > { > > char MonText[50]; // ceci declare 50 octets plus un pointeur vers ces 50 octets > > ... > > return MonText; // tu renvoies le pointeur > > } // mais ici, les 50 octets sont effacés! le pointeur ne pointe plus vers kwak ce soit > > > > tu devrais plutot faire une fonction avec la chaine a retourner en argument: > > c'est a dire: > > void Mot(const char chaine[200],int NMot,char *resultat); > > > > et l'appeler comme suit: > > char date[50]; > > Mot(DateHeure, 1,date); > > SetDlgItemTextA (hWnd,IDC_DATE, date); > > > > j'espere m'etre expliq; > > --anthraxx >
|
|
vendredi 22 août 2003 à 00:04:35 |
Re : fonction qui retourne un char

Kaid
|
Passer un tableau de caractères en paramètre pour qu'une fonction y stocke un résultat est la meilleure méthode qui soit. Dans les autres cas, la fonction aurait été obligée d'allouer de la mémoire dynamiquement ce qui peut être une source de fuite mémoire. Par contre si tu travailles en C++ avec des objets, ca aurait été plus simple, le C++ n'est donc pas à amélorier. Ni le c d'ailleurs :). Kaid - kaid.fr.st------------------------------- Réponse au message : ------------------------------- > Ok, ca marche ! Merci bcp > Mais je suis quand meme un peu décu qu'il n'y ai pas eu une solution plus simple... Il resterait quelques améliorations a faire au C/C++ loool > GLipper > > > > ------------------------------- > Réponse au message : > ------------------------------- > > > C simple: quand tu declare un tableau de caracteres dans une fonction, il ne subsite que dans les limites de la fonction. > > > > Explication: > > > > char *Mot(char chaine[200], int NMot) > > { > > char MonText[50]; // ceci declare 50 octets plus un pointeur vers ces 50 octets > > ... > > return MonText; // tu renvoies le pointeur > > } // mais ici, les 50 octets sont effacés! le pointeur ne pointe plus vers kwak ce soit > > > > tu devrais plutot faire une fonction avec la chaine a retourner en argument: > > c'est a dire: > > void Mot(const char chaine[200],int NMot,char *resultat); > > > > et l'appeler comme suit: > > char date[50]; > > Mot(DateHeure, 1,date); > > SetDlgItemTextA (hWnd,IDC_DATE, date); > > > > j'espere m'etre expliq; > > --anthraxx >
|
|
vendredi 22 août 2003 à 19:28:15 |
Re : fonction qui retourne un char

anthraxx
|
Oui, mais il existe des solutions plus simples et rapides meme en c++: la classe CString de MFC par exemple (pour ceux qui cont VC++). Mais pour ceux qui comme moi abhorrent la MFC, et pour ceux qui ont un autre compilateur, il reste plus qu'a coder une telle classe soi-meme (c'est sque j'ai fait: instructif...)
------------------------------- Réponse au message : -------------------------------
> NON l'efficacite et la simplicite vont rarement ensemble, pour cela c'est vb ou java mais les performances ne seront plus au rdv. > BruNews, ciao... > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Ok, ca marche ! Merci bcp > > Mais je suis quand meme un peu décu qu'il n'y ai pas eu une solution plus simple... Il resterait quelques améliorations a faire au C/C++ loool > > GLipper
|
|
vendredi 22 août 2003 à 19:39:48 |
Re : fonction qui retourne un char

BruNews
|
Une classe CString qu'elle soit de MFC ou de nimporte qui, c'est l'utilite que je ne vois pas mais ses nuisances je les vois a coup sur. Allocations et desalloc memoire sans arret tout cela pour pouvoir ecrire str += autreStr, comme si strcpy et strcat n'allaient pas aussi bien. BruNews, ciao...
------------------------------- Réponse au message : -------------------------------
> Oui, mais il existe des solutions plus simples et rapides meme en c++: la classe CString de MFC par exemple (pour ceux qui cont VC++). > Mais pour ceux qui comme moi abhorrent la MFC, et pour ceux qui ont un autre compilateur, il reste plus qu'a coder une telle classe soi-meme (c'est sque j'ai fait: instructif...) > > ------------------------------- > Réponse au message : > ------------------------------- > > > NON l'efficacite et la simplicite vont rarement ensemble, pour cela c'est vb ou java mais les performances ne seront plus au rdv. > > BruNews, ciao... > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > Ok, ca marche ! Merci bcp > > > Mais je suis quand meme un peu décu qu'il n'y ai pas eu une solution plus simple... Il resterait quelques améliorations a faire au C/C++ loool > > > GLipper
|
|
vendredi 22 août 2003 à 22:09:15 |
Re : fonction qui retourne un char

anthraxx
|
Absolument d'accord que strcpy et strcat sa marche ok (et j'utilise QUE ça) Mais pour un debutant, il y a quand meme moins de risques de se tromper, de laisser des failles a la buffer overflow, et de perdre du temps inutile. Il y a 3 ans, j'etais ravi qu'il existat la classe CString. Et cela, sutout quand la rapidité n'est pas l'objectif principal du programme, donc les alloc/desalloc, c'est pas grave. C'est pas elles qui vont le ralentir considerablement, mais plutot les gros loops ou access a internet/au disque dur... et il arrive d'avoir a faire des operations plus complexes que "str += autreStr".
cela dit, je suis d'accord qu'un developper professionel(serieux) devrait s'en tenir aux fonctions les plus efficaces
(d'ailleurs le resultat: des buffer overflow dans presque tous les programmes qui sortent...)
------------------------------- Réponse au message : -------------------------------
> Une classe CString qu'elle soit de MFC ou de nimporte qui, c'est l'utilite que je ne vois pas mais ses nuisances je les vois a coup sur. Allocations et desalloc memoire sans arret tout cela pour pouvoir ecrire str += autreStr, comme si strcpy et strcat n'allaient pas aussi bien. > BruNews, ciao...
|
|
Cette discussion est classée dans : fonction, date, chaine, char, retourne
Répondre à ce message
Sujets en rapport avec ce message
pb avec une fonction qui retourne une chaine de caractère [ par othland ]
slt tlm: j'ai introduit le code suivant: char * my_func(........) {char ch[30]; mon code..... return(ch); } void main() { char chaine[30]; chaine
getftime(),me retourne pas la date que je veux [ par tibob51 ]
<TD id=HB_Focus_Element vAlign=top width="100%" background="" height=250 UNSELECTAB
fonction qui retourne une chaine==>libération de la mémoire [ par tibob51 ]
Bonsoir,J'ai eu besoin d'utiliser une fonction me retournant une chaine,après mes recherches sur cpp france j'ai trouvé la syntaxe suivante:char* Fonc
PROBLEME pour retourner un char* a partir d'un fichier [ par kobee12 ]
Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang
PROBLEME pour retourner un char* apres recuperation d'une chaine(sscanf) d'un fichier [ par kobee12 ]
Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang
PB de tri [ par dodo1309 ]
Bonjour,Voila je suis entrain de faire un programme qui doit permettre à l'utilisateur d'encoder les valeurs de son choix pour ensuite l'ajouter à la
Fonction _T(); [ par d4M13N ]
Bonjour,Je suis en train de faire un petit programme en C++ Application Windows Form sous Microsoft Visual Studio 2005.Je suis bloqué sur une malheure
convertir chaine de carractère en date [ par sofienems ]
Salut :je suis sous C++ , j'ai une chaine de carractère que je doit convertir en date au format JJ/MM/AAAA . quelqu'un entre vous peut m'aider ?
fonction system() accès refusé [ par fratleym ]
Bonjour,oui je sais, la fonction system() c'est horrible mais bon là, je l'utilise surtout pour que ceux qui reprendront le code sachent à peu près ce
Chaine de caractère en paramètre dans une fonction [ par ph87 ]
bonjour à tous,j'ai un petit problème pour faire un programme en C, je suis perdu dans les pointeurs :)voila ce que je veux faire : je veux qu'une f
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|