begin process at 2012 05 29 03:10:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Diviser une chaine de caractères en 3 chaines de caractères


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Diviser une chaine de caractères en 3 chaines de caractères

jeudi 7 octobre 2004 à 17:11:42 | Diviser une chaine de caractères en 3 chaines de caractères

rico77200

A la base je dipose d'un fichier .txt dont le contenu est :
apprenti1;ti1;te1
apprenti2;ti2;te2
apprenti3;ti3;te5
apprenti4;ti4;te4
apprenti5;ti5;te5

Je souhaite récuperer ses chaines de caractères dans un tableau à 3 dimensions, mais sans les ';' Respect à celui qui arrivera à faire ca!!!!! car avec fscanf ca ne marche pas!!

Ensuite je souhaite comparer la dernière colonne du tableau (qui contient les te1 te2 te3) pour regrouper les même!

Je sais que ca ne doit pas etre grand chose, mais c'est très urgent!!!! (un projet d'info...)

Merci à tous!!

jeudi 7 octobre 2004 à 17:42:57 | Re : Diviser une chaine de caractères en 3 chaines de caractères

Nebula

Membre Club
tu peux lire une ligne puis utiliser strtok dessus pour initialiser ton tableau manuellement, pour le regroupement je sais pas... faire trois petits tableaux et les merger en un seul ensuite ?
jeudi 7 octobre 2004 à 18:14:31 | Re : Diviser une chaine de caractères en 3 chaines de caractères

rico77200

ca peut etre pas mal! je t'explique : j'ai récupéré tout le fichier dans un tab à 2 dimensions en gardant les ";"
j'ai essayé avc strtok, mais il s'arrète après le 1er ";" :-( tu saurais comment passer au caractère suivant et à la ligne suivante?

Merci d'avoir répondu et de m'aider ;-)
jeudi 7 octobre 2004 à 18:45:02 | Re : Diviser une chaine de caractères en 3 chaines de caractères

Nebula

Membre Club
C'est normal, il faut l'utiliser dans une boucle et passer à la ligne suivante s'il retourne NULL (= pas de ; trouvés). Evidemment faut penser à récupérer la fin de la chaîne avant de passer à la ligne suivante ;-)
jeudi 7 octobre 2004 à 18:53:20 | Re : Diviser une chaine de caractères en 3 chaines de caractères

rico77200

c'est le retour chariot qu'il ne me pren pas!! tu pourrais (si tu as le tps bien sur!!) de me mettre qqes lignes de codes pr récuples chaines ds 3 tableaux différents?
- un tab pour le nom des apprentis
- un tab pour le nom des TI
- un tab pour le nom des TE

ce serait vraiment cool de ta part!! car je n'arrive pas à envoyer le contenu du pointeur dans les tableaux!!

je t'envoi mon bout de code que j'ai commencé, si tu peu le completer pr qu'il gère les 3 tableaux : tab1[] tab2[] et tab3[]

for(i=0;i<14;i++){
p=strtok(tmp[i],";");
tab1[i] = p;
while(p){
p=strtok(NULL,";");
}
}
jeudi 7 octobre 2004 à 18:53:51 | Re : Diviser une chaine de caractères en 3 chaines de caractères

rico77200

c'est le retour chariot qu'il ne me pren pas!! tu pourrais (si tu as le tps bien sur!!) de me mettre qqes lignes de codes pr récuples chaines ds 3 tableaux différents?
- un tab pour le nom des apprentis
- un tab pour le nom des TI
- un tab pour le nom des TE

ce serait vraiment cool de ta part!! car je n'arrive pas à envoyer le contenu du pointeur dans les tableaux!!

je t'envoi mon bout de code que j'ai commencé, si tu peu le completer pr qu'il gère les 3 tableaux : tab1[] tab2[] et tab3[]

for(i=0;i<14;i++){
p=strtok(tmp[i],";");
tab1[i] = p;
while(p){
p=strtok(NULL,";");
}
}
jeudi 7 octobre 2004 à 20:06:49 | Re : Diviser une chaine de caractères en 3 chaines de caractères

Nebula

Membre Club
Un exemple rapide qui fonctionne, mais à toi de gérer la lecture du fichier (en mode texte) et la répartition dans les tableaux :
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define STR "apprenti1;ti1;te1\napprenti2;ti2;te2\napprenti3;ti3;te5\napprenti4;ti4;te4\napprenti5;ti5;te5"

int main(void) {
char* str = malloc(sizeof(STR) * sizeof(char));
strcpy(str, STR);
char* c = strtok(str, ";");
while (c) {
printf("%s ", c);/* gérer la répartition dans les tableaux ici */
c = strtok(NULL, ";");
}
free(str);
return EXIT_SUCCESS;
}
jeudi 7 octobre 2004 à 20:18:49 | Re : Diviser une chaine de caractères en 3 chaines de caractères

leprov

ifstream is ("tonfic);

for ( ; ; )
{
string Str;
getline (is, Str, ';');
//traitement pr mettre ds ton tableau
getline (is, Str, ';');
//traitement pr mettre ds la deuxieme colonne
getline (is, str);
//metttre ds troisieme collone
if (is.eof()) break;
}

voila une solution pour la lecture si t'es en c++ et pas en c.
inclure string, fstream, et using namespace std
jeudi 7 octobre 2004 à 20:43:51 | Re : Diviser une chaine de caractères en 3 chaines de caractères

rico77200

je n'arrive pas à mettre le contenu de l'adresse du pointeur dans un tab!! je récupère la valeur NULL!!!! si qqn peut m'aider?
#include<stdio.h>
#include<string.h>

#define FICHIER_ENTREE "entree.txt" //remplacer si besoin entre guillemet par le fichier d'entree
#define FICHIER_SORTIE "resultat.txt" //remplacer si besoin entre guillemet par le fichier de resultat
#define NB 3


main()
{
FILE *entree, *sortie;
char line[256];
char tmp[200][256];
int count=0;
int i=0;
int jour[3] = {1,2,3};
int heure[9] = {9,10,11,12,13,14,15,16,17};
int salle[4] = {1,2,3,4};
int nb_salles=4;
char *p;
char tab1[20];
char *tab2[20];
char *tab3[20];
int r,l;


entree = fopen(FICHIER_ENTREE, "r");

if((entree=fopen(FICHIER_ENTREE, "r")) ==NULL){
printf("impossible d'ouvrir le fichier %s\n", FICHIER_ENTREE);
}

while(fgets(line,1023,entree) != NULL){
sscanf(line,"%s;%s;%s",&tmp[count][0]);
//printf("%s\n", tmp[count]);
count++;
}


for(r=0;r<5;r++){
p=strtok(tmp[r],";");
tab1[r] = (char*)p;
//printf("%s\n", p);
while(p){
p=strtok(NULL,";");
//printf("%s\n", p);
tab2[r] = (char*)p;
tab3[r] = (char*)p;
}
}


for(l=0;l<5;l++){
printf("%s\n", tab2[l]);
}


sortie = fopen(FICHIER_SORTIE, "w+");

if((sortie=fopen(FICHIER_SORTIE, "w+")) ==NULL){
printf("impossible d'ouvrir le fichier %s\n", FICHIER_SORTIE);
}

if((heure[i] < 18) && (salle[i] < nb_salles)){
for(i=0;i<count;i++){
fprintf(sortie,"%d;%d;%d;%s\n", jour[0], heure[i], salle[0], tmp[i]);
}
}



}



merci à tous!!!!!!
jeudi 7 octobre 2004 à 20:45:57 | Re : Diviser une chaine de caractères en 3 chaines de caractères

leprov

entree = fopen(FICHIER_ENTREE, "r");

if((entree=fopen(FICHIER_ENTREE, "r")) ==NULL)

????????????????????????????????????

t'aurais pas voulu mettre

if((entree=fopen(FICHIER_ENTREE, "r")) ==NULL)

tout simplement?

1 2

Cette discussion est classée dans : chaine, chaines, caractères, diviser, te1


Répondre à ce message

Sujets en rapport avec ce message

Chaines de caractères C++ [ par Scalpweb ] Bonjour à tous. Je suis un programmeur VB qui essaye d'apprendre le C++. En VB, je connais de nombreuses instrcutions pour gérer les chaines de caract les chaines de caractères dans C [ par hzocm ] Bonjour, Je voudrais copier un fragment de la chaine A, comment faire?? ex: A = hello, je suis une chaine je veux copier de la position 3 à 5 --> j'a remplir un tableau avec des chaines de caractères (C) [ par djibfr ] Bonjour à tous! Alors voila, j'ai un petit problème tout bête mais je n'arrive pas à la résoudre et mes recheches ne m'ont pas trop éclairé. Je souhai Chaines de caractères [ par Roro8883 ] Salut,je suis complètement perdu et embrouillé dans les chaînes de caractères en C++ !!!!Comment est-ce que je peux faire pour savoir, dans une chaine analyse syntaxique [ par fadiam ] Bonjour à tous. je cherche à réaliser une fonction qui modifie une chaine de caractères.elle n'accepte que les "chiffres" de 0 à 9 et quelques autres Chaine de caractères et liste de mots [ par joshua509 ] J'ai un gros problème d'algorithme. Comment faire pour placer,tous les mots séparer d'un espace d'une chaine de caractère,dans une liste chainée de mo Test sur chaine de caractères [ par valoch33 ] Bonjour à tous, J'ai un petit problème pour faire mon programme. En effet, je veux faire saisir des données par un utilisateur, comme son nom et son p comment traiter une chaine de caractères séparée par espaces (String) [ par baptchr55 ] Bonjour à tous, j'ai un nouveau problème. Je récupère une chaine de caractères dans un "[i]string[/i]", et je souhaiterais extraire ceux-ci mot par m suppression caractère [ par fadiam ] bonsoir. une fonction lisant une chaine de caractères n'accepte que les caractères entre '0' et '9' (chiffres) et les ',' '-' '.' et ' '. Si il y a d découpage de chaine de caractères [ par eldred ] Bonjour!! voila dans l'optique du dévelopement d'une appli client serveur, je programme un fonction qui doit comparer deux chaines puis séparer celle


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,154 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales