Bonjour,
Je souhaite stocker des données dans un fichier txt mais j'ai des données comme suit :
Comment faire pour effacer l'espace non utilisé ?Code:nom;prenom;age À3D \ÀwD¾wÿÿÿÿ ðÀw"ðÀw @ `þ" $ü û@ À
Merci d'avance.
Version imprimable
Bonjour,
Je souhaite stocker des données dans un fichier txt mais j'ai des données comme suit :
Comment faire pour effacer l'espace non utilisé ?Code:nom;prenom;age À3D \ÀwD¾wÿÿÿÿ ðÀw"ðÀw @ `þ" $ü û@ À
Merci d'avance.
Il faut que le buffer qui contient les données se termine par '\0'.
Merci pour la rapidité.
Je poste le code parce que j'ai pas compris.
Le fait de concatener les caracteres "\0" ne change rien.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 cout << "Nom :\n"; cin >> nom; cout << "Prenom :\n"; cin >> prenom; cout << "Age :\n"; cin >> age; cout << "Vous vous appelez " << prenom <<" "<< nom << " et vous avez " << age << " ans \n"; /* Insertion dans fichier */ FILE * pFile ; pFile = fopen("test.txt","w"); int tNom = sizeof(nom); int tPrenom = sizeof(prenom); int tAge = sizeof(age); int tTotal = tNom + tPrenom + tAge + 2 ; cout << tTotal ; char mess[tTotal]; strcpy (mess,nom); strcat (mess,";"); strcat (mess,prenom); strcat (mess,";"); strcat (mess,age); strcat (mess,"\0"); fwrite (mess,1,sizeof(mess),pFile); fclose(pFile); cout << "\n Données sauvegardées " ;
Je ne fais pas ce qui faut je pense.
Merci en tout cas pour ta réponse.
C'est normal si "age" n'est pas une chaine valide.
Quel est le type de "nom","prenom","age"?
ce sont tous des char
Code:
1
2
3 char nom[30]; char prenom[30]; char age[3];
Outch... Code donc en C++, tu te feras moins ch***.
Les chaînes de caractères
Les fichiers
Code:char *mess=new char[tTotal];
et le "strcat(mess,"\0")" ne sert plus.Code:fwrite (mess,1,tTotal,pFile);
Ou bien en gardant le prog original:
a la place de:Code:
1
2
3 int tNom = strlen(nom); int tPrenom = strlen(prenom); int tAge = strlen(age);
Code:
1
2
3 int tNom = sizeof(nom); int tPrenom = sizeof(prenom); int tAge = sizeof(age);
Merci pour ta reponse mais maintenant j'ai ceci :
Pour ce qui est du string, je n'arrive pas à faire un strcat avec...Code:nom;prenom;25 F_PROCESSORS=2 OS=Windows_NT Path=C:\Dev-Cpp\Bin;C
yes
avec strlen, ça marche impec.
Merci!
Utilise plutôt fprintf :
Code:fprintf( fichier, "OS=%s\nPATH=%s\n", getenv("OS"), getenv("PATH") );
C'est du C ton truc :fessee:
Le même en C++ :
Comme tu le vois, tu n'as aucune manipulation à base de pointeur, ou de calcul sur les tailles, ou de \0 à ajouter.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include <string> #include <iostream> #include <fstream> using namespace std; string nom, prenom; int age; cout << "Nom :\n"; cin >> nom; cout << "Prenom :\n"; cin >> prenom; cout << "Age :\n"; cin >> age; cout << "Vous vous appelez " << prenom <<" "<< nom << " et vous avez " << age << " ans \n"; /* Insertion dans fichier */ ofstream pFile("test.txt"); pFile << nom << ";" << prenom << ";" << age; cout << "\n Données sauvegardées " ;
ok super merci pour l'aide !