Pages : 1
#1 Le 20/04/2012, à 17:36
- dudule_85
Couper une chaine de caractères
Bonjour,
Voila, j'ai besoin de faire un petit programme qui m'ouvre un fichier texte dans lequel se trouve des nombres. Je voudrais pouvoir prendre ses nombres et les découper en 2 parties en sachant qu'il peuvent être de taille variable (entre 10 et 11 chiffres)
Une premiere partie dans laquelle se situe les 8 premiers chiffres et la seconde partie qui contiendrait le reste du nombre en sachant qu'il peut etre de taille variable.
exemple du contenu du fichier :
57026010222
57026009730
5702601016
Je voudrais pouvoir récupérer pour la 1er ligne les nombres 57026010 et 0222 et ainsi de suite pour les lignes suivantes.
Oriez vous une idée de comment faire?
Merci beaucoup!!!
Hors ligne
#2 Le 20/04/2012, à 18:32
- pingouinux
Re : Couper une chaine de caractères
Bonjour,
while read lig
do
n1=${lig:0:8}
n2=${lig:8}
printf "%8s %s\n" "$n1" "$n2"
done <fichier_texte
Hors ligne
#3 Le 20/04/2012, à 18:53
- dudule_85
Re : Couper une chaine de caractères
a mince je suis bête, j'oubliais de preciser que je suis en C++. désolé mais merci quand même!! je ne savais pas qu'on pouvait faire un script de la sorte
Hors ligne
#4 Le 20/04/2012, à 19:57
- pingouinux
Re : Couper une chaine de caractères
Éventuellement, tu peux montrer le bout de programme que tu as déjà écrit, en disant sur quoi tu bloques. Il y a bien quelqu'un qui pourra t'aider. Je connais le C, mais n'ai que des notions de C++.
Hors ligne
#5 Le 20/04/2012, à 20:02
- dudule_85
Re : Couper une chaine de caractères
Ok, et bien pour le moment j'essaie mais la récupération ne fonctionne pas correctement, voila mon code pour le moment:
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
int main()
{
char matricule_part_1[20];
char matricule_part_2[20];
ifstream fichier( "chevre.csv" );
if (fichier )
{
string ligne; // variable contenant chaque ligne lue
while ( getline( fichier, ligne ) )
{
cout << ligne <<endl;
cout << ligne.size() << endl;
if (ligne.size() < 8)
cout << "erreur de matricule"<< endl;
else{
//on decoupe la chaine en une partie de 8 caractere et une seconde partie avec le reste
strncpy (matricule_part_1, &ligne[0], 7);
strcpy(matricule_part_2,&ligne[8]);
cout<< matricule_part_1 <<endl;
cout<< matricule_part_2 <<endl;
}
}
}
else
{
cout << "ERREUR: Impossible d'ouvrir le fichier en lecture." << endl;
}
return 0;
}
Merci
Hors ligne
#6 Le 20/04/2012, à 20:29
- pingouinux
Re : Couper une chaine de caractères
Je pense qu'il suffit de remplacer cette ligne :
strncpy (matricule_part_1, &ligne[0], 7);
par celles-ci :
// Chaîne initialisée à 0, pour avoir un caractère nul en fin de chaîne après la copie
memset(matricule_part_1,0,sizeof(matricule_part_1));
// La longueur à copier est de 8 caractères
strncpy (matricule_part_1, &ligne[0], 8);
Édité :
ou bien :
// La longueur à copier est de 8 caractères
strncpy (matricule_part_1, &ligne[0], 8);
// Caractère nul en fin de chaîne
matricule_part_1[8]=0;
Dernière modification par pingouinux (Le 21/04/2012, à 05:53)
Hors ligne
Pages : 1