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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
void CTatoCreePatchDlg::OnCree()
{
CString str1,str2,str3;
int n= static_cast< CListBox * >(GetDlgItem(IDC_LIST1))->GetCurSel();
// ici je reccupere le nom du fichier pour l'ouvrir
if(n!=LB_ERR) static_cast< CListBox * >(GetDlgItem(IDC_LIST1))->GetText(n,str1);
FILE *f,*g;
str2.Format("c:\\tatouage\\patchwork\\%s",str1); // ouvre premier fichier en lecture
f=fopen(str2,"r" );
if(!f)
{
printf("impossible d'ouvrir le fichier");
}
str3.Format("c:\\tatouage\\patchwork\\nov%s",str1); //cree un nouveau fichier qui porte le nom novstr1
f=fopen(str3,"w" ); //ouvre le deuxieme fichier en ecriture
if(!g)
{
printf("impossible d'ouvrir le fichier");
}
int cmp =0; //compteur qui va compter le nombre du caractere ds mon fichier
if((f != NULL) & (g!=NULL))
{
/* Med: Déplacé. */
int caractere;
do
{
caractere = fgetc(f); // On lit le caractère
fputc(caractere,g); //on ecrit ds le fichier g
cmp++; // On compte
/* Med: corrigé le nom de variable. */
} while (caractere != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
fclose(f);
fclose(g);
}
int nb;
g=fopen(str3,"r+" );
if(g != NULL)
{
for(int i=0 ; i<cmp ; i++)
{
fscanf ( g,"%d", nb) ; // ici je lis juste les nombres ds mon fichier
/* Med:
1. Pas de & ici: C'est un nombre que tu écris, pas son adresse.
2. Très mauvais. La taille du nombre peut changer.
Tu DOIS écrire dans un autre fichier, pas dans le même
(ou alors, en forçant en toutes circonstances la taille du nombre). */
fprintf( g, "%d",nb+1); // ici je fais mon traitement, incrementer chaque nombre de 1
}
fclose(g);
} |
Partager