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

  FORUM HardWare.fr
  Programmation
  C

  [Newby] Problème avec les char*

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Newby] Problème avec les char*

n°597627
dudul51
Posté le 27-12-2003 à 18:31:16  profilanswer
 

Bonjour, étant grand débutant en c je me bats avec les char* et ils sont en train de gagner (vive les strings en c++ et autres)!
 
Voilà le truc :  
j?ai une structure du genre :
 
Struct structure {
 Unsigned char valeur[16] ;
 ..
 ..
 ..
} ;
 
et j?ai un buffer du type char* buffer ;
et une variable de type structure
et je veux remplir mon buffer avec le champ valeur de ma structure donc j?ai écris dans une boucle : buffer[i] = s.valeur[i] ; et la c?est une erreur de segmentation. Pourquoi sachant que printf("%s",buffer[i]) ça marche ?  
 
je ne veux pas déclarer char buffer[n] parce que je ne connais pas n (même si dans l?exemple que j?ai donné on connait n).
 
Merci de votre aide.
 
 
 
 

mood
Publicité
Posté le 27-12-2003 à 18:31:16  profilanswer
 

n°597630
*syl*
--> []
Posté le 27-12-2003 à 18:34:42  profilanswer
 

Bah sans malloc ou [] ça va pas l'faire hein donc le n faudra que tu le sortes de qq part de toutes façons..

n°597876
Ace17
Posté le 28-12-2003 à 11:30:41  profilanswer
 

char* ca veut pas dire chaine de caractere... ca veut dire pointeur vers une chaine de caracteres. Si tu ne le fais pas pointer vers une chaine (que tu auras allouée avec un new ou un malloc) et que tu t'en sers quand meme tu vas avoir des problemes car tu es en train d'écrire n'importe ou dans la mémoire de ton application.

n°605321
zera
Posté le 08-01-2004 à 03:02:08  profilanswer
 

moi je fais plein de char * sans malloc ni new, jamé de pb :pp

n°605382
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-01-2004 à 09:38:15  profilanswer
 

Zera a écrit :

moi je fais plein de char * sans malloc ni new, jamé de pb :pp


 
[:le kneu] c'est un peu comme si tu dis que ce n'est pas dangereux de fermer les yeux pendant les trajets sur autoroute parce que tu n'as jamais eu d'accident.


Message édité par antp le 08-01-2004 à 09:39:59

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°605782
Ace17
Posté le 08-01-2004 à 18:13:44  profilanswer
 

Zera a écrit :

moi je fais plein de char * sans malloc ni new, jamé de pb :pp


 
Parce que tu peux tres bien faire des char* qui pointent vers des chaines déja allouées ( passage de chaine en parametre, par exemple )

Code :
  1. void Affiche(char* s)
  2. {
  3.   printf(s);
  4. }
  5. int main()
  6. {
  7.   Affiche("J'apprends les pointeurs" );
  8. }


Message édité par Ace17 le 08-01-2004 à 18:14:50
n°605785
Taz
bisounours-codeur
Posté le 08-01-2004 à 18:17:55  profilanswer
 

qui est mauvais
const char *
 
et n'oubliez pas vos amies puts et fputs :o

n°605897
schnapsman​n
Zaford Beeblefect
Posté le 08-01-2004 à 22:04:44  profilanswer
 

Ace17 a écrit :


void Affiche(char* s)
{
  printf(s);
}
 
int main()
{
  Affiche("J'appren%ds les pointeur%s" );
}


 
[:maitre drasche]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°606319
blackgodde​ss
vive le troll !
Posté le 09-01-2004 à 12:07:33  profilanswer
 

dudul51 a écrit :

et je veux remplir mon buffer avec le champ valeur de ma structure donc j?ai écris dans une boucle : buffer[i] = s.valeur[i] ; et la c?est une erreur de segmentation. Pourquoi sachant que printf("%s",buffer[i]) ça marche ?  


 
attention a la condition de sortie de ta boucle :
 

Code :
  1. for (int i=0; i<16; ++i) buffer[i] = s.valeur[i] ;


 
est faux : en effet, buffer[15] par exemple n'est pas valide pour const char* buffer = "test";
 
tu peux donc utiliser strncpy (mieux que strcpy pour eviter egalement les dépassement du tableau unsigned char valeur[16];)
 
(sinon je sais pas si c'est important mais je trouve ca plus propre de garder le mm typage : unsigned char ou char)


---------------
-( BlackGoddess )-
n°606329
Wiiip
Pseudo-lurkeur
Posté le 09-01-2004 à 12:26:49  profilanswer
 

Diantre ! Doublon ^^


Message édité par Wiiip le 09-01-2004 à 12:27:32
mood
Publicité
Posté le 09-01-2004 à 12:26:49  profilanswer
 

n°606330
Wiiip
Pseudo-lurkeur
Posté le 09-01-2004 à 12:27:12  profilanswer
 

i=0
while((*(buffer+i))*(i-16))
    buffer[i]=s.va[i++]
Maintenant, si buffer n'est pas une chaine qui se termine par \0, va mourrir ^^  ( char buffer [200] )
String, ça existe sinon ...
 
Wiiip - qui vient de repeter la même manip pendant 3 jours (res=grosbug)

n°606385
blackgodde​ss
vive le troll !
Posté le 09-01-2004 à 13:16:53  profilanswer
 

Wiiip a écrit :


String, ça existe sinon ...


 
std::string, c'est du c++ :o


---------------
-( BlackGoddess )-
n°606401
Taz
bisounours-codeur
Posté le 09-01-2004 à 13:29:22  profilanswer
 

Wiiip a écrit :

i=0
while((*(buffer+i))*(i-16))
    buffer[i]=s.va[i++]

ignoble

n°606405
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-01-2004 à 13:32:11  profilanswer
 

ouais [:mlc] c'est illisible et un peu bourrin comme méthode
 
Et je doute des perfs par rapport à deux simples comparaisons, vu qu'une multiplication demande plus de cycles CPU


Message édité par antp le 09-01-2004 à 13:32:55

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°606439
Taz
bisounours-codeur
Posté le 09-01-2004 à 13:48:20  profilanswer
 

pi surtout
écrire *(buffer+i) puis buffer[i] c'est vraiment intelligent

n°606512
blackgodde​ss
vive le troll !
Posté le 09-01-2004 à 14:42:29  profilanswer
 

puis le *(i-16) il sert a quoi ?


---------------
-( BlackGoddess )-
n°606516
Taz
bisounours-codeur
Posté le 09-01-2004 à 14:48:17  profilanswer
 

BlackGoddess a écrit :

puis le *(i-16) il sert a quoi ?

ben quand on c'est pas faire un test ...

n°606536
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-01-2004 à 15:19:44  profilanswer
 

taz a écrit :

ben quand on c'est pas faire un test ...


 
ou qu'on ne sait pas écrire :o
 
[:neowen]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°606547
Taz
bisounours-codeur
Posté le 09-01-2004 à 15:27:00  profilanswer
 

antp a écrit :


 
ou qu'on ne sait pas écrire :o
 
[:neowen]

tant que je me débrouille en sait


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

  [Newby] Problème avec les char*

 

Sujets relatifs
Montrer le problème avec les valeurs null<?xml version="1.0" ?> -> probleme : font-size dans IE
[java]Problème d'import de classe swingProbleme avec Mysql_num_rows, je vois pas la
Problème de boutisme...Putain de problème de noob mais je galère....
[PHP] Probleme sur fonctionprobleme d'installation de jbuilder9 [résolu]
Problème de compilation[MySQL] petit probleme d'update
Plus de sujets relatifs à : [Newby] Problème avec les char*


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