Concaténer valeur d'un seul tableau en c
Fermé
samuelk1391
Messages postés
44
Date d'inscription
jeudi 3 juin 2010
Statut
Membre
Dernière intervention
26 janvier 2016
-
Modifié par samuelk1391 le 30/03/2012 à 14:54
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 30 mars 2012 à 20:41
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 30 mars 2012 à 20:41
A voir également:
- Concaténer valeur d'un seul tableau en c
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Trier un tableau excel - Guide
4 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
30 mars 2012 à 15:03
30 mars 2012 à 15:03
Pardon ?
Ce que tu veux faire n'est pas clair, donne un exemple précis de ce que tu as et du résultat que tu veux obtenir.
à mon avis, c'est :
Buffer2[114];
Buffer2[0]='\0';
strcat(Buffer2,Buffer[4]);
strcat(Buffer2,Buffer[5]);
à part que ça ne fonctionne pas avec des caractère. Il faut faire son propre strcart :
Ce que tu veux faire n'est pas clair, donne un exemple précis de ce que tu as et du résultat que tu veux obtenir.
à mon avis, c'est :
Buffer2[114];
Buffer2[0]='\0';
strcat(Buffer2,Buffer[4]);
strcat(Buffer2,Buffer[5]);
à part que ça ne fonctionne pas avec des caractère. Il faut faire son propre strcart :
void strcat(char* a,char b) { int i=0; while(a[i]) i++; a[i]=b; a[i+1]='\0'; }
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
30 mars 2012 à 15:07
30 mars 2012 à 15:07
Bonjour,
Attention, Buffer[i] est un char. Tu ne peux donc pas concaténer deux char pour mettre dans Buffer[i]. De plus strcat sert à concaténer des chaînes, pas des caractères.
Il faut utiliser un buffer suffisamment grand pour contenir la chaîne.
Par exemple : char bufferFinal[10];
Et ensuite :
Attention, Buffer[i] est un char. Tu ne peux donc pas concaténer deux char pour mettre dans Buffer[i]. De plus strcat sert à concaténer des chaînes, pas des caractères.
Il faut utiliser un buffer suffisamment grand pour contenir la chaîne.
Par exemple : char bufferFinal[10];
Et ensuite :
bufferFinal[0]=Buffer[1]; bufferFinal[1]=Buffer[3]; bufferFinal[2]=Buffer[5]; ... bufferFinal[5]=0; /*très important que la chaîne se finisse par '\0'*/ puts(bufferFinal); /*cela affichera bufferFinal*/
samuelk1391
Messages postés
44
Date d'inscription
jeudi 3 juin 2010
Statut
Membre
Dernière intervention
26 janvier 2016
30 mars 2012 à 15:21
30 mars 2012 à 15:21
Pour être plus précis, j'ai un tableau contenant des chiffres, par exemple :
Buffer[X]="12300045\0"; (J'ai une partie de code qui va supprimer les éléments qui ne sont pas des chiffes)
Et j'ai besoin de récupérer juste la valeur 3000, et de la transformer en entier.
Concaténer n'est peut être pas le bon terme, étant donner que Buffer est déjà une chaine, et que les caractères sont déjà concaténer à l'intérieur.
Buffer[X]="12300045\0"; (J'ai une partie de code qui va supprimer les éléments qui ne sont pas des chiffes)
Et j'ai besoin de récupérer juste la valeur 3000, et de la transformer en entier.
Concaténer n'est peut être pas le bon terme, étant donner que Buffer est déjà une chaine, et que les caractères sont déjà concaténer à l'intérieur.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
30 mars 2012 à 15:31
30 mars 2012 à 15:31
Et c'est quoi la règle de récupération du nombre dans le Buffer ? Comment savoir si c'est 3000 et non 123 ? Il s'agit toujours du nombre de 4 chiffres démarrant à la position n°3 ?
Cdlt,
Cdlt,
samuelk1391
Messages postés
44
Date d'inscription
jeudi 3 juin 2010
Statut
Membre
Dernière intervention
26 janvier 2016
30 mars 2012 à 15:37
30 mars 2012 à 15:37
Oui, je vais vous donnée le format d'une ligne :
14/12/1008:01:22;2,000;1,148;1,412;1,959;1,461;1,906;1,314
Les caractères en gras sont ceux que j'ai besoin de récupérer, mais sans les virgules.
J'arrive a la transformer dans un autre buffer en :
1412100801222000114814121959146119061314
Et j'aimerai juste récupérer les valeurs en gras afin de les convertir en int. J'aurai donc au final 8 entier à 4 chiffres, et ils sont toujours à la même place dans la ligne.
Merci pour votre attention à ce sujet :)
14/12/1008:01:22;2,000;1,148;1,412;1,959;1,461;1,906;1,314
Les caractères en gras sont ceux que j'ai besoin de récupérer, mais sans les virgules.
J'arrive a la transformer dans un autre buffer en :
1412100801222000114814121959146119061314
Et j'aimerai juste récupérer les valeurs en gras afin de les convertir en int. J'aurai donc au final 8 entier à 4 chiffres, et ils sont toujours à la même place dans la ligne.
Merci pour votre attention à ce sujet :)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
30 mars 2012 à 16:33
30 mars 2012 à 16:33
Pour récupérer les chiffres en gras :
char BufferFinal[29];
strncpy(BufferFinal, Buffer+12,28);
Je ne comprends pas cette histoire de 8 entiers à 4 chiffres.
char BufferFinal[29];
strncpy(BufferFinal, Buffer+12,28);
Je ne comprends pas cette histoire de 8 entiers à 4 chiffres.
samuelk1391
Messages postés
44
Date d'inscription
jeudi 3 juin 2010
Statut
Membre
Dernière intervention
26 janvier 2016
30 mars 2012 à 16:38
30 mars 2012 à 16:38
Une fois que j'ai récupérer ces résultats, je veux les convertir en entier pour pouvoir utiliser une fonction qui ne gère que les entiers, et il y a 8 valeurs en gras dont j'ai besoin, elle sont séparées par des ";". Les premiers caractères étant la date et l'heure, ensuite nous avons en faites 8 données séparées par des ";", c'est pour cela que je parle de 8 entiers à 4 chiffres, ces valeurs seront forcément de la forme "XXXX" où X en un chiffre (on supprime également la virgule).
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
30 mars 2012 à 16:43
30 mars 2012 à 16:43
Beh je compte que 7 chiffres en gras. C'est quoi le 8ème ?
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
30 mars 2012 à 16:48
30 mars 2012 à 16:48
Si c'est aussi simple que ça, un strncat http://pwet.fr/man/linux/fonctions_bibliotheques/posix/strncat/ avec une boucle et un ponteur de chaine devraient faire l'affaire :
char* buffer=Buffer; buffer+=offset;// faire pointé buffer sur le premier caractère à récupérer strncat(BufferFinal,buffer,4);
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
30 mars 2012 à 17:59
30 mars 2012 à 17:59
strncpy me paraît plus adéquat.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
30 mars 2012 à 20:41
30 mars 2012 à 20:41
pas faux