tableaux et chaines de caractere [C] - C - Programmation
Marsh Posté le 16-01-2005 à 13:22:41
- pas de copie : simple affectation
- copie : strcpy
mais fais donc voir comment t'alloue tes diff / diff2
Marsh Posté le 16-01-2005 à 14:13:42
ok.. je savais pas qu'on pouvais utiliser strcpy pour copier une chaine dans un tableau
en fait se que j'essai de faire c'est la partie sauvegarde des scores d'un jeux, apres quelques parties je me retrouve avec 3 tableaux:
les noms: le niveau: le score:
pierre easy 5
paul medium 2
hotcat easy 3
azert hard 8
je cherche a reclasser ces infos en fonction du niveau dans un premier temps, et ensuite en fonction du score
je sait pas si je suis claire mais bon...
pour allouer les tableaux ? un extrait:
Code :
|
Marsh Posté le 16-01-2005 à 14:18:01
en fait comme ca ca marche...
Code :
|
...mais j'ai des warning du type:
[Warning] passing arg 1 of `strcpy' from incompatible pointer type
Marsh Posté le 16-01-2005 à 14:18:30
ben c'est bon, sauf que tu ferais bien d'initialiser win. Et fait gaffe à la longeur de tes chaines "MEDIUM" -> ça fait tout pile 7
Marsh Posté le 16-01-2005 à 14:28:32
étant donné que ca marche comme ca je veut bien mais y a pas un moyen de virer les warning ?
Marsh Posté le 16-01-2005 à 21:08:35
hotcat a écrit : en fait comme ca ca marche... |
Non, ça ne 'marche' pas. Ce code est gravement buggé.
Citation :
|
Normal, pour un chaine, il faut un tableau de 'char' et non de 'int'. strcpy() attend des adresses de char...
d'autre part, si diff a une taille de 1, diff[1] est hors limite. Le comportement est indéfini.
Rappel : pour un tableau de taille N, les indices valides vont de 0 à N-1.
Marsh Posté le 17-01-2005 à 12:45:31
Je suis d'accord avec Mr Delahaye, il y a une grosse bogue sur l'utilisation des variables déclarées. Si cela marche c'est parceque par chance la zone mémoire où sont stockées les chaines ne sont pas modifiées par ailleurs et que cette zone est dans le segment données utilisable par le programme. Dans ce cas je dirais qu'il vaut mieux ne pas avoir de chance car cela rend d'autant plus difficile la recherche de la bogue.
En ce qui concerne le type, C a (à mon gout) l'avantage d'être faiblement typé; il vaut tout de même mieux utilisé un transtypage tel (char) pour convertir explicitement les types. Cela facilite la relecture, le débogage et montre que l'auteur à fait volontairement un transtypage en connaissance de cause. Dans le code sité, le transtypage implicite montre une erreur de déclaration de type pour les variables diff
Marsh Posté le 16-01-2005 à 13:02:27
je débute en C et j'ai un petit probleme...
j'ai un tableau dans lequel j'ai rangé des chaines de caractere avec la fonction strcpy ( strcpy(diff[x],"EASY" ); )
mon probleme est que je voudrai extraire la chaine contenu dans diff[x] pour la ranger dans diff2[y] par exemple
est ce qu'il existe une fonction qui permette de faire ca ?, ou en utilisant des pointeurs...
merci d'avance pour votre aide