Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
793 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  strstr donne un pointeur, mais j'aimerai un(e) string =)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

strstr donne un pointeur, mais j'aimerai un(e) string =)

n°334262
Phlos
Posté le 15-03-2003 à 23:30:16  profilanswer
 

Salut,
 
Je suis newbie en C :)
Voila mon probleme :
 

Code :
  1. char *password;
  2. password = strstr(strstr(buffer,"oldpassword" ),"value" );


 
password est donc un pointeur vers un buffer qui m'interesse  :whistle:  
 
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.
 

Code :
  1. char *mid(char *buffer, unsigned int i, unsigned int size)
  2. {
  3.     unsigned int j;
  4.     char *temp;
  5.     for (j=i; j<(i+size); j++) {
  6.         temp[j-i] = buffer[j];
  7.                 if (j>strlen(buffer)) break;
  8.     }
  9.     temp[size]='\0';
  10.     return temp;
  11. }


 
et en gros j'aimerai faire ca :

Code :
  1. char retour;
  2. retour = mid(password,0,5);


 
Mais comme password est un pointeur ca marche pas logique, alors j'ai essayé *password mais marche pas non plus..  :sarcastic:  
 
Merci pour votre aide  :pt1cable:


Message édité par Phlos le 15-03-2003 à 23:45:25
mood
Publicité
Posté le 15-03-2003 à 23:30:16  profilanswer
 

n°334270
leneuf22
Posté le 15-03-2003 à 23:52:56  profilanswer
 

Essaye ça
 

Code :
  1. char* retour;
  2.   retour = mid(password,0,5);


 
(et achète toi un bon bouquin, car tu mélanges tout :) )


Message édité par leneuf22 le 15-03-2003 à 23:54:50
n°334271
kjus
Posté le 15-03-2003 à 23:53:45  profilanswer
 

bah  

Code :
  1. char *retour;
  2.   retour = mid(password,0,5);

n°334272
Phlos
Posté le 16-03-2003 à 00:04:25  profilanswer
 

Merci  :jap:  
 
Mais ca marche pas mieux, aucune erreur de compilateur mais le programme plante sur retour = mid(password,0,5);
 
 [:sisicaivrai]
 
EDIT : C'est dans la fonction mid plus exactement que ca plante, sur la ligne "temp[j-i] = buffer[j];"  :p
 
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  :lol:  
L'erreur doit venir de la  :sarcastic:


Message édité par Phlos le 16-03-2003 à 00:15:26
n°334273
Phlos
Posté le 16-03-2003 à 00:12:22  profilanswer
 

[:phlos]  
 
 :hello:

n°334288
VisualC++
J'va y penser ...
Posté le 16-03-2003 à 01:14:52  profilanswer
 

temp = malloc(...)et free(temp)


Message édité par VisualC++ le 16-03-2003 à 01:15:06
n°334302
Phlos
Posté le 16-03-2003 à 09:45:55  profilanswer
 

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)  :ange:  
 
 
 :hello:

n°334340
VisualC++
J'va y penser ...
Posté le 16-03-2003 à 12:18:25  profilanswer
 

sauf que je repond a ta question comment ecrire

Code :
  1. temp = new char[sizeof(char)*size+1];

en C

n°334374
Phlos
Posté le 16-03-2003 à 13:05:23  profilanswer
 

VisualC++ a écrit :

sauf que je repond a ta question comment ecrire

Code :
  1. temp = new char[sizeof(char)*size+1];

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 ?  :??:

n°334598
leneuf22
Posté le 16-03-2003 à 19:06:34  profilanswer
 

Il faut faire free() quand tu n'as plus besoin de la mémoire allouée, et pas avant.

mood
Publicité
Posté le 16-03-2003 à 19:06:34  profilanswer
 

n°334789
Deaddy
Posté le 17-03-2003 à 00:12:26  profilanswer
 

c pas un peu lourd tout ca ?
 
unsigned int j;
char temp[size];
 
un brin plus simple quand meme, nan

n°334839
gloop
Posté le 17-03-2003 à 08:02:16  profilanswer
 

Deaddy a écrit :


char temp[size];


c'est plus simple, mais possible que si la valeur de size est connue à la compilation (donc si c'est une constante)

n°334846
El_gringo
Posté le 17-03-2003 à 08:48:19  profilanswer
 

Deaddy a écrit :

c pas un peu lourd tout ca ?
 
unsigned int j;
char temp[size];
 
un brin plus simple quand meme, nan


 
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.

n°335366
Deaddy
Posté le 17-03-2003 à 15:10:27  profilanswer
 

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

n°1488885
AthlonSold​ier
Feel the power
Posté le 08-12-2006 à 21:05:06  profilanswer
 

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 :)

n°1488889
++fab
victime du syndrome IH
Posté le 08-12-2006 à 21:19:17  profilanswer
 

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).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  strstr donne un pointeur, mais j'aimerai un(e) string =)

 

Sujets relatifs
[C++] Vous utilisez des handles à la place de pointeur?MFC pointeur sur CDocument
[C]condition string qui marche pas ![c++] effacer un tableau de pointeur
[HTML, JS] Accès pointeur ligne d'un tableau htmlstring ou char * ?
Nt4 serveur : au secours !! (pointeur de pile)Convertir une classe String en int ???
pointeur et allocation[Access] j'arrive pas a transformer un string
Plus de sujets relatifs à : strstr donne un pointeur, mais j'aimerai un(e) string =)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR