Concaténer valeur d'un seul tableau en c
samuelk1391
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis étudiant et en projet de fin d'année. J'ai besoin de concaténer plusieurs caractère d'un buffer (initialisé en unsigned char Buffer[114]).
J'ai besoin par exemple de concaténer
Buffer[4];Buffer[5];Buffer[6] etc..
Le problème est que je ne dispose pas de beaucoup de librairies car le programme va être mit en place dans un système embarqué. J'ai déjà pas mal chercher sur internet, notamment via la fonction strcat, mais je ne peux pas par exemple faire :
strcat(Buffer[4],Buffer[5]);
Cela ne fonctionne pas. J'ai voulu transformer ces valeurs en int mais la fonction "atoi" ne fonctionne pas, il transforme toute la chaîne, or je n'ai pas que des chiffres dans cette chaine.
Merci d'avance, cordialement Samuel.
Je suis étudiant et en projet de fin d'année. J'ai besoin de concaténer plusieurs caractère d'un buffer (initialisé en unsigned char Buffer[114]).
J'ai besoin par exemple de concaténer
Buffer[4];Buffer[5];Buffer[6] etc..
Le problème est que je ne dispose pas de beaucoup de librairies car le programme va être mit en place dans un système embarqué. J'ai déjà pas mal chercher sur internet, notamment via la fonction strcat, mais je ne peux pas par exemple faire :
strcat(Buffer[4],Buffer[5]);
Cela ne fonctionne pas. J'ai voulu transformer ces valeurs en int mais la fonction "atoi" ne fonctionne pas, il transforme toute la chaîne, or je n'ai pas que des chiffres dans cette chaine.
Merci d'avance, cordialement Samuel.
A voir également:
- Concaténer valeur d'un seul tableau en c
- Tableau word - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Tableau croisé dynamique - Guide
4 réponses
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'; }
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*/
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.
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 :)
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).
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);