begin process at 2012 05 29 13:49:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

pointeurs char, char* et tableau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pointeurs char, char* et tableau

vendredi 8 septembre 2006 à 22:49:32 | pointeurs char, char* et tableau

bbear

'lut

j'ai un probleme avec des chaines de caracteres, tableaux de chaines et autres joyeusetées

c'est pour un hiscore. je ne sais pas si la manière de faire est la bonne, ou si il y en a de meilleur, mais avec ma methode, je n'arrive pas à copier dans le tableau de char tel qu'il est fait.
je suis tout ouïe pour une autre solution

voilà mes datas : les scores sont préremplis au demarrage ou chargé si fichier de scores.

char *names[]={
"NOM JOUEUR 1",
"NOM JOUEUR 2",
"............................",
etc... il y a 10 noms
};

l'affichage, la sauvegarde... fonctionnent en utilisant le contenu par names[i]
mais quand je copie ça marche pour les noms de 0 à 4, 6 et 8, mais pour les noms 5,7 ou 9 il recopie le nom dans les 5 et 7 si noms 9 modifiés, ou 7 et 9 si le 5, etc...

et encore, la copie fonctionne.
mais j'ai essayé en mode console, et là ça crash avec strcpy, strncpy, sprintf ...

où est ma bévue ? faut-il s'y prendre comme ça ?
je doute...

merci d'avance, car je suis completement sec
vendredi 8 septembre 2006 à 23:22:51 | Re : pointeurs char, char* et tableau

nightlord666

Membre Club
Il ne faut pas oublier d'allouer la mémoire avant de copier quelque chose dedans :

names[0] = new char[TAILLE_NOM_MAX];
strcpy(names[0], "Chaine à copier");


Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
vendredi 8 septembre 2006 à 23:45:58 | Re : pointeurs char, char* et tableau

bbear

euh...oui mais je crée pas un nouvel élément, il existe déjà, non ??
ôtez moi d'un doute
j'ai :
char *names[]={
"TEXTE",
"TEXTE"
};
names[0]="TEXTE" . quand je l'affiche il existe bien !? non ?
en plus la taille reste la meme
(en C, "new" ça marche ?? moi non)
vendredi 8 septembre 2006 à 23:48:32 | Re : pointeurs char, char* et tableau

nightlord666

Membre Club
Tu utilise malloc en C. La, pour le moment, ton strcpy essaie de placer des caractères à une zone mémoire inaccessible, car non initialisée.

D'ailleurs, il est déconseillé d'utiliser names[0] = "BLABLA"; Je ne suis même pas sur que ça marche...


Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
samedi 9 septembre 2006 à 00:10:13 | Re : pointeurs char, char* et tableau

bbear

en en tête de programme j'ai
char*names[]={"TEXTE","TEXTE"};
ça ne marche pas??? pourtant tout s'affiche et meme se sauvegarde

je precise que je ne fais pas names[0]="texte" dans le programme lui meme

alors là, je cromprends plus rien...
pourtant quand je relis mon bouquin de C, il est bien indiqué dans les déclarations que l'on peut faire char chaine="texte"; comme on fait int valeur=10;


samedi 9 septembre 2006 à 00:23:02 | Re : pointeurs char, char* et tableau

bbear

bon, avec malloc ça marche, mais j'en suis tout retourné...

samedi 9 septembre 2006 à 00:41:34 | Re : pointeurs char, char* et tableau

luhtor

Réponse acceptée !
Non tu as raison, ca c'est correct:
char *names[]={
"NOM JOUEUR 1",
"NOM JOUEUR 2",
"............................",
etc... il y a 10 noms
};

Tu initialises sur la meme ligne, donc le pointeur est alloué localement automatiquement. Donc pas besoin ni de malloc ou de new.
samedi 9 septembre 2006 à 00:58:35 | Re : pointeurs char, char* et tableau

bbear

ha! hmmm...
donc j'en reviens à ma premiere question avec mon principal probleme : comment ecrire dans un tel tableau de char
j'explique : c'est un tableau de nom pour un hiscore
on saisie le nom (taille pre determinée) dans un buffer (char buffer[taille])
et je veux copier ce buffer dans la table de nom à la position N donc dans names[N] :
strncpy(names[N],buffer,taille);

c'est pas que ça marche pas, mais il y a un drôle de bug qui n'apparait pas pour toutes les lignes !
du names[0] à names[4] et 6,8 pas de probleme.
mais quand je fais de meme avec names[5], names[7] ou names[9], alors je me retrouve avec un tableau de nom comme cela :
"TEXTE0"
"TEXTE1"
"TEXTE2"
"TEXTE3"
"TEXTE4"
"SAISIE5" <- ici ce que j'ai copié
"TEXTE6"
"SAISIE5" <- il se recopie ici !!
"TEXTE8"
"SAISIE5" <- et ici !!!

j'hallucine ou bien...
samedi 9 septembre 2006 à 01:45:13 | Re : pointeurs char, char* et tableau

aldoniel

si ça marche pas, c'est un bug cqfd ;-) ton strncpy(names[N],buffer,taille); doit écrire n'imorte où tu peux essayer un code comme ça char *names[]={ "NOM JOUEUR 1", "NOM JOUEUR 2", "............................", }; char *pchar=names[1]; //éditer joueur 2 strncpy(pchar,buffer,taille); au moins il ne pourra pas déborder sur les autres lignes
samedi 9 septembre 2006 à 02:11:36 | Re : pointeurs char, char* et tableau

bbear

ça bug encore, la meme chose
c'est dingue

je crois que je vais faire autrement, mais comment...
peut etre avec un struct

1 2

Cette discussion est classée dans : tableau, noms, chaines, char, pointeurs


Répondre à ce message

Sujets en rapport avec ce message

passer un tableau de pointeurs en parametres [ par achirane ] bonjour,je debute en C (dur..) et j'ai un pb qui va surement vous faire ricaner ;-) :je voudrais passer un tableau de pointeurs en parametre a ma fonc tableau de chaines de char [ par JaguiJaguar ] Salut, je suis etudiant.je dois réaliser un prog en c qui lit une chaine de char, la stocke dans la premiere ligne d'un tableau char *tab[n]où n est l Pointeurs et tableau de pointeurs [ par dragon3x6 ] Salut à la communauté des developpeurs C,j'essai d'écrire un bout de code qui enregistre une liste de mots dans une structure de type arbre.Lorsqu'un tableau de chaines [ par ashboody ] const char * Ini_GetPrivateProfileString (...);mytype myfunc (char **RegisteredChannels_Name);{strcpy( RegisteredChannels_Name[ChannelIndex], Saisie chaines caractère en boucle en C [ par oim09 ] Voila alors j'ai rencontré un problème que je n'avai jamais rencontrer. Je veu faire une fonction qui rempli un tablaeu avec des chaines de caractères chaines de caractères dans un tableau char a 2 dimensions [ par deck_bsd ] Bonjour a tous, voila J'ai un fichier qui contient des mots (1sur une ligne différente) et je voudrai bien copier chacun de ces mots dans un tableau tableau de pointeurs vers des structures [ par Kurpeus1 ] Bonjour et joyeuses fêtes a tous.Je voudrais créer un tableau de pointeurs vers des structures (de taille identiques) mais je ne sais pas trop comment Probleme avec des pointeurs [ par KissyFroth ] Voici mon code : char * t1 = new char [30]; char * t2 = new char [40]; //Les chiffres ne sont pas exact mai c pas grave cout << strlen(t1) << "\n"; c tableau des caractere en C [ par themahg ] ThemahG, Japon toujours! j'ai un problème avec mon programme il bloque à partir de la fonction si dessous:ai tableau de caractère [ par sakjimh ] salut à tous voila j'ai un petit problème: je veux crée un tableau de caractère avec une boucle for et l'afficher caractère par caractère:#include #in


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,544 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales