Accueil > Forum > > > > chaine de caractéres
chaine de caractéres
lundi 12 février 2007 à 09:59:02 |
chaine de caractéres

niamor23
|
Salut, voici mon probléme, mon programme contient une chaine de caractéres avec des espaces, et je voudrais envoyé chaque bloc de caractére séparé par des espaces, vers un tableau. exemple: AnsiString valeur="1234 5678 9412"; char tab[50]; voila ce que je voudrais avoir en utilisant une fonction: tab[1]=1234 tab[2]=5678 tab[3]=9412 Merci d'avance pour la réponse. a+
|
|
lundi 12 février 2007 à 12:22:41 |
Re : chaine de caractéres

yoyo269
|
Salut ! Déjà il y a un souci avec la déclaration de ton tab. Dans tab[50] tu ne peux pas mettre tout ça. Voilà un exemple de ce que tu pourrais faire. int i = 0; char tab[10][50], * c; // tab[10][50] pour 10 chaines de 49 caractères maximum chacune. c = valeur; while(*c) { if(*c == ' ') { *c = 0; strcpy(tab[i], valeur); i++; } c++; } strcpy(tab[i], valeur); Pas testé mais ça devrait être ça. Tiens moi au courant.  YOYO, @+. "L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !" ____________________________________________ [Site officiel de YoyoCut, découpe fichiers open source]
|
|
lundi 12 février 2007 à 14:30:03 |
Re : chaine de caractéres

turnerom
|
Salutn je te conseil d'utiliser Boost qui fait ca tres bien :
#include <iostream>
#include <boost/tokenizer.hpp>
vector<string> split( const std::string & Msg, const std::string & Separators ) {
typedef boost::tokenizer<boost::char_separator<char> > my_tok;
// vector pour le resultat vector<string> v;
boost::char_separator<char> sep( Separators.c_str() );
my_tok tok( Msg, sep );
for ( my_tok::const_iterator i = tok.begin(); i != tok.end(); ++i ) { v.push_back(*i); } }
int main() { string valeur="1234 5678 9412"; vector<string> v=split(valeur, " "); }
Ainsi tu as tout tes resultats dans v[0], v[1], ...
TuRn3r
|
|
lundi 12 février 2007 à 14:32:59 |
Re : chaine de caractéres

SAKingdom
|
yoyo>> Tu recopie 1234 dans toute les chaines car tu utilise valeur qui ne change jamais Voici quelque chose d'optimisé (je pense): char buffer[] = "1234 5678 9012", *c = buffer; char tab[4][10]; int j = 0; do { int k = 0; while(*c != ' ' && *c) tab[j][k++] = *c++; tab[j++][k] = 0; } while(*c++); C++ (@++)
|
|
lundi 12 février 2007 à 14:37:10 |
Re : chaine de caractéres

yoyo269
|
Oups ! Très juste SAKingdom ! Oublié un petit quelque chose moi.  int i = 0; char tab[10][50], * c, * d; // tab[10][50] pour 10 chaines de 49 caractères maximum chacune. d = c = valeur; while(*c) { if(*c == ' ') { *c = 0; strcpy(tab[i], d); i++; c++; d = c; } else c++; } strcpy(tab[i], d); Là ça sera déjà mieux. En plus c'est super rapide. YOYO, @+. "L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !" ____________________________________________ [Site officiel de YoyoCut, découpe fichiers open source]
|
|
lundi 12 février 2007 à 14:56:43 |
Re : chaine de caractéres

SAKingdom
|
Mais le problème avec ton code, c'est que tu parcoure toute la chaine 2x alors qu'une seule suffirait:
while(*c)
{
if(*c == ' ')
On cherche jusqu'à trouver un espace
strcpy(tab[i], d);
On revient au début du mot puis on reparcoure une seconde fois jusqu'à
l'espace (remplacé par 0, on se retrouve donc, en plus, avec une chaine initiale
modifiée).
______
do
{
int k = 0;
while(*c != ' ' && *c) tab[j][k++] = *c++;
On copie dans tab[j] tout les caractères rencontrés jusqu'à tomber sur un espace ou sur un 0.
tab[j++][k] = 0;
} while(*c++);
On ajoute le 0 à la chaine destinatrice (on conserve donc la chaine
initial intacte) puis on test le caractère. Si il s'agit d'un caractère
(l'espace ici), on le saute et on continue sinon, il s'agit du 0 de fin
de chaine donc on quitte. On a parcourue la chaine qu'une seule fois. C++ (@++)
|
|
lundi 12 février 2007 à 15:13:59 |
Re : chaine de caractéres

yoyo269
|
C'est vrai que j'avais pas fait attention qu'en utilisant le strcpy() je faisais 2 parcours. Donc je suis complètement ok avec toi.  Rien à dire ! 20/20  YOYO, @+. "L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !" ____________________________________________ [Site officiel de YoyoCut, découpe fichiers open source]
|
|
Cette discussion est classée dans : chaine, espaces, tab, caractéres
Répondre à ce message
Sujets en rapport avec ce message
TABLEAUX SANS ESPACES [ par golum ]
char tab[10];../../*je cherche un test pour savoir si un tableau libéré de ses espaces est vide ...*/if(trim(tab)!='')
Supprimer les espaces dans une chaine [ par ticalimero ]
Je sais, ca parait tout simple...mais je vais mettre unteps fou à le faire alors si vous pouviez m'aider svp !Je veux supprimer tous les espaces d'une
langage c [ par trinity666 ]
bonjour 1)je ne comprend pas pourquoi ma fonction atobm ne compile pas; le compilateur dit kil ya 1 erreur ds while((c=fgetc(fp))!=EOF)){ mais je vois
Chaine de caractère [ par Thanatoster ]
Bonjour a tous, mon problème est le suivant, pour les cours je dois faire un programme d'apres l'énoncé suivant"saisir au clavier des éléments chaine
Enlever les espaces [ par darkwhite ]
Salut a tous, bah voila je veux resoudre l'exercice batteau d'enlever les espaces d'une chaine de caracteres. Pourtant j'ai fait ce code : # include i
recherche d'une chaine dans un fichier [ par ymlf ]
Problème au niveau du scanf()int recherche(char *chaine,char *FileName){ int i, k; char *tmp, *tab[50], *timer[20]; FILE *svf; svf=fopen(FileName,"r
Algo trop lent :( [ par MoDDiB ]
Bon tout d'abord je tient à préciser qu'il s'agit du concours prologin auquel je compte participer donc si certaines personnes ne veulent pas m'aider
Inserer des espaces dans une chaine de caractère [ par MorbhAck ]
Bonjour a tous !Alors c'est très simple mais je coince un peu :j'ai une chaine de caratère :par ex:char chaine[]="0123456789";puis jaimerai lui inseré
pb de conversion de chaine de caractéres [ par Thanatos ]
Bonjour,Je désirerais faire un programme sur les fonctions logiques de base : un utilisateur rentre une fonction logique et le programme lui sort la t
problème lecture fichier de grande taille [ par africanwinners ]
j'ai concu ce code pour lire le contenu d'un fichier et le mettre dans un tableau à 2 dimensions: ca marche pour un fichier de petite taille:et dès qu
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|