passage tableau à tableau avec boucle for - C - Programmation
Marsh Posté le 06-03-2007 à 16:57:17
En java ca donnerais un truc du genre :
Code :
|
Mais comme j'ai pas bien compris ce que tu voulais vraiment faire...
Marsh Posté le 06-03-2007 à 17:01:06
aneurysm a écrit : il faut une boucle for mais aprés 400 ou 500 cheveux arrachés je vien demander de l'aide |
Si tu veux le faire à la main, c'est assez simple.
Montre-nous le code que tu as créé pour voir où tu en es, on t'aidera à partir de là.
Surtout que j'imagine que c'est pour un exercice, sinon tu utiliserais strcpy()... non ?
MEI a écrit : En java ca donnerais un truc du genre |
Marsh Posté le 06-03-2007 à 17:03:11
nan carrement pas c'est pour mon projet bts, je dois rajouter les quotes et les virgules pour pouvoir envoyer sur un afficheur LCD. mmm strcpy()?? c'est quoi ca?
Marsh Posté le 06-03-2007 à 17:04:35
man strcpy
en ligne de commande sur un unixoïde, ou dans google ça marche aussi
Marsh Posté le 06-03-2007 à 17:07:23
J'suis pas fan des allocation dynamique, mais ici le pb est plus algorythmique qu'autre chose.
Suffit de remplacer les tab1.length en length(tab1) et de savoir allouer un tableau de char sans que ça plante...
Marsh Posté le 06-03-2007 à 17:08:19
Indice : tu réponds pas à la question. Probablement parce que Java != C.
edit : ah ben tiens, c'est p'têt moi qui me trompe, justement parce que ce qu'a écrit aneurysm dans l'énoncé a un sens précis en C
Marsh Posté le 06-03-2007 à 17:09:02
d'accord mais apparement ca ne me permet pas de rajouter les quotes ni les virgules..
et c'est pour ca que je dois (a mon avis) utiliser une boucle for ... ou jme plante carrement
Marsh Posté le 06-03-2007 à 17:12:12
Bon, je viens de rerererelire le post initial. C'est p'têt MEI qui a raison sur le fond, et non moi, si c'est le cas je te présente mes excuses MEI. Mais c'est pas encore gagné tellement c'est clair.
Ouais, donc boucle for sur chaque caractère du premier tableau, et ajout dans le second, rien de bien sorcier. Montre-nous où tu en es dans ton code.
Marsh Posté le 06-03-2007 à 17:14:24
Ma boucle fait ce que tu veut en principe Mais le tableau fait 40 apres... donc comme tu restait en [10] j'ai pas trop compris où tu veux en venir.
Marsh Posté le 06-03-2007 à 17:15:27
???? qu'est ce qui n'est pas clair dans mon 1er post???? j'ai meme illustré au cas ou??
Marsh Posté le 06-03-2007 à 17:17:15
Justement, ton illustration est fausse, ça correspond à une initialisation d'un tableau de caractères, caractère par caractère.
Mais montre-nous ton code, ça ira mieux.
Marsh Posté le 06-03-2007 à 17:30:28
voila l'exemple de mon code, avec des problemes quand meme
char tab1[20]="pomme";
char tab2[40];
for (int i=0;i<20;i++)
{
tab2[i]= "'";
tab2[i+1]= tab1[j];
tab2[i+2]= "'";
tab2[i+3] = ",":
i=i+4;
j++;
}
Marsh Posté le 06-03-2007 à 17:33:16
Bah si tu veut vraiment faire ça (et je me demande pourquoi), mon code fonctionne je pense.
avec des length(tab1) (enfin la fonction C qui retourne la taille d'un tableau);
j'ai edit mon code.
Marsh Posté le 06-03-2007 à 17:34:21
D'où vient la variable j ?
De plus, une solution élégante existe avec la fonction sprintf(), qui te permettra de copier dans tab2 chaque lettre de tab1 de manière formatée.
exemple pour le premier caractère :
char tab1[20] = "pomme"; sprintf(tab2, "%s'%c',", tab2, tab1[0]); |
Je crois que cela devrait t'aider (ce n'est qu'un morceau de ce que tu dois faire pour arriver à tes fins).
Bien sûr, on ne traite ici que de l'affectation de caractères d'un tableau vers un autre, on passe complètement sur les aspects de gestion de la mémoire.
Marsh Posté le 06-03-2007 à 17:36:16
MEI a écrit : Bah si tu veut vraiment faire ça (et je me demande pourquoi), mon code fonctionne je pense. |
Mouais. Il y a des outils en C, et surtout en Java, qui permettent de traiter le problème de manière bien plus simple que ce que propose ton algorithme.
Marsh Posté le 08-03-2007 à 10:43:51
merci, j'ai fait un programme :
char tab1[5] = "pomme";
char tab2[40];
int j=0;
int i;
for (i=0;i<20;i++)
{
tab2[i]= 0X60;
tab2[i+1]= tab1[j];
tab2[i+2]= 0X60;
tab2[i+3] = 0x2C;
i=i+3;
j++;
}
printf("contenu case :%s \n",&tab2);
qui m'affiche bien ce que je veux, par contre, il ne s'arrete pas au dernier charactère de tab1 et donc après m'afficher : 'p','o','m','m','e', il m'affiche carrement nympe, j'ai essayé i<length(tab1) mais il ne reconait pas la fonction...?
Marsh Posté le 08-03-2007 à 10:46:01
1. toute chaîne de caractère en C doit se terminer par un caractère nul '\0'
http://mapage.noos.fr/emdel/init_c.htm#string
2. c'est laid ce que tu as fait. Déjà, 0x60 tu peux mettre '\'' c'est plus parlant. Ensuite, modifier la variable d'itération d'une boucle for, c'est moche. Enfin, j'avais proposé une piste avec sprintf() qui menait à une solution plus simple à mettre en oeuvre, as-tu exploré cette piste ?
Marsh Posté le 09-03-2007 à 14:47:59
effectivement je n'ai repensé au charactère nul que grace a mon prof (le programme m'affichait nympe en attendant)
ensuite pour le 0x60 il me le faut (le beck est assez susceptible a ce niveau la) et meme si c'est laid je suis arrivé a faire marcher le tout. Pour ce qui est de la beautée je verrai ca quand tout marchera je n'ai pas beaucoup de temps pour faire beaucoup de choses.
sur ce je vous remercie pour votre aide
Marsh Posté le 06-03-2007 à 16:49:58
HELLO ALL
voila j'aurai besoin de votre aide sur un sujet :
j'ai un tableau de charactère de type:
tab1[10]={pomme}
et je souhaiterai mettre les charactères de ce tableau dans un 2ème :
tab2[10]={}
mais en rajouter chaque characteres entre quote et avec une virgule donc :
tab2[10]={'p','o','m','m','e'}
il faut une boucle for mais aprés 400 ou 500 cheveux arrachés je vien demander de l'aide
voila si vous avez des idées .
merci d'avance