strstr donne un pointeur, mais j'aimerai un(e) string =) - C++ - Programmation
Marsh Posté le 15-03-2003 à 23:52:56
Essaye ça
Code :
|
(et achète toi un bon bouquin, car tu mélanges tout )
Marsh Posté le 16-03-2003 à 00:04:25
Merci
Mais ca marche pas mieux, aucune erreur de compilateur mais le programme plante sur retour = mid(password,0,5);
EDIT : C'est dans la fonction mid plus exactement que ca plante, sur la ligne "temp[j-i] = buffer[j];"
EDIT 2 : j'ai oublié de preciser que j'ai supprimé cette ligne dans la fonction "mid" : "temp = new char[sizeof(char)*size+1];"
parceque c'est du C++ et je sais pas le traduire en C
L'erreur doit venir de la
Marsh Posté le 16-03-2003 à 01:14:52
temp = malloc(...)et free(temp)
Marsh Posté le 16-03-2003 à 09:45:55
VisualC++ a écrit : temp = malloc(...)et free(temp) |
Merci mais en fait j'ai rajouté un buffer dans la fonction "mid" (maintenant ca a 4 arguments)
Marsh Posté le 16-03-2003 à 12:18:25
sauf que je repond a ta question comment ecrire
Code :
|
en C
Marsh Posté le 16-03-2003 à 13:05:23
VisualC++ a écrit : sauf que je repond a ta question comment ecrire
en C |
Mais si je fais un malloc() au début de la fonction "mid" et que je fais un free() a la fin, si je renvoie un pointeur vers ce buffer, ca va pas trop marcher ?
Marsh Posté le 16-03-2003 à 19:06:34
Il faut faire free() quand tu n'as plus besoin de la mémoire allouée, et pas avant.
Marsh Posté le 17-03-2003 à 00:12:26
c pas un peu lourd tout ca ?
unsigned int j;
char temp[size];
un brin plus simple quand meme, nan
Marsh Posté le 17-03-2003 à 08:02:16
Deaddy a écrit : |
c'est plus simple, mais possible que si la valeur de size est connue à la compilation (donc si c'est une constante)
Marsh Posté le 17-03-2003 à 08:48:19
Deaddy a écrit : c pas un peu lourd tout ca ? |
Et s'il fait ça à l'intérieur de sa fonction "mid", l'espace mémoire alloué sera détruit à la fin de la fonction. Donc inutilisable après.
Marsh Posté le 17-03-2003 à 15:10:27
gloop, j'ai testé et ca marche , alors que size n'est connu qu'à l'exec
ensuite détruire ce qui a été alloué en fin de fonction me parait plutot pertinent
si vraiment c génant, suffit de mettre un static devant, je pense
Marsh Posté le 08-12-2006 à 21:05:06
gloop a écrit : c'est plus simple, mais possible que si la valeur de size est connue à la compilation (donc si c'est une constante) |
C'est faux vu que le tableau de char est alloué dynamiquement dans la stack et "free" à la sortie de la fonction
Marsh Posté le 08-12-2006 à 21:19:17
Deaddy a écrit : gloop, j'ai testé et ca marche , alors que size n'est connu qu'à l'exec |
C'est une extension C99; Les Variable Length Array (VLA).
Marsh Posté le 15-03-2003 à 23:30:16
Salut,
Je suis newbie en C
Voila mon probleme :
password est donc un pointeur vers un buffer qui m'interesse
J'aimerai savoir comment avoir le reste du buffer pointé par "password", parceque j'ai une fonction (voir en dessous) qui necessite un buffer en entrée et non un pointeur vers un buffer.
et en gros j'aimerai faire ca :
Mais comme password est un pointeur ca marche pas logique, alors j'ai essayé *password mais marche pas non plus..
Merci pour votre aide
Message édité par Phlos le 15-03-2003 à 23:45:25