cedm237 Profil : Jeune recrue | j'ai suivi les conseils précédent, j'ai une erreur en release, corruption memory
Code :
- // VC8.cpp*: définit le point d'entrée pour l'application console.
- //
- /clr
- #include "stdafx.h"
- #include <fstream>
- #include <iomanip>
- #include <iostream>
- #include <cstring>
- #include "stdio.h"
- #include "stdlib.h"
- #include <vcclr.h>
- #include <vector>
- using namespace std;
- using namespace System;
- FILE *fp1;
- std::string;
- //Variable
- int i,nb_step_X,nb_step_Y,nb_step_Z,j,k,cc,dd,n;
- long recl,lenr,numf,numx,numy;
- float xmin,xmax,ymin,ymax,zmin,zmax;
- struct inf2 {
- float X, Y, Z ;
- float A, B, C, F ;
- }info2[10000000];
- struct ba2 {
- float X, Y, Z ;
- float A, B, C, F ;
- }bar2[10000000];
- struct juj2 {
- float X, Y, Z ;
- float A, B, C, F ;
- }juju2[10000000];
- int precision = 1; //mm
- int main()
- {
- String ^str;
- int num_rec = 0;
- pin_ptr<const wchar_t> wch = PtrToStringChars(str);
- // Convert to a char*
- size_t origsize = wcslen(wch) + 1;
- const size_t newsize = 1000;
- size_t convertedChars = 0;
- char nstring[newsize];
- wcstombs_s(&convertedChars, nstring, origsize, wch, _TRUNCATE);
- //strcat_s(nstring, " (char *)" );
- errno_t err;
- //Read from data file
- if((err=fopen_s(&fp1,"C:\\Sample\\project2DAT.dat","rb" ))!=0)
- //fread(&recl,sizeof(recl),1,fp1);
- //lenr=recl/256/4;
- fseek(fp1,28+24,0);
- fread(&numf,sizeof(numf),1,fp1);
- fseek(fp1,3*28+16,0);
- fread(&ymin,4,1,fp1);
- fread(&ymax,4,1,fp1);
- fread(&numy,4,1,fp1);
- fseek(fp1,4*28+16,0);
- fread(&xmin,4,1,fp1);
- fread(&xmax,4,1,fp1);
- fread(&numx,4,1,fp1);
- for (long i=0;i<2;i++)
- {
- fread(&info2[i].X,4,1,fp1);
- fread(&info2[i].Y,4,1,fp1);
- fread(&info2[i].Z,4,1,fp1);
- if (zmax < (info2[i].Z))
- {
- zmax= info2[i].Z;
- }
- if (zmin > (info2[i].Z))
- {
- zmin= info2[i].Z;
- }
- fread(&info2[i].A,4,1,fp1);
- fread(&info2[i].B,4,1,fp1);
- fread(&info2[i].C,4,1,fp1);
- fread(&info2[i].F,4,1,fp1);
- }
- fclose(fp1);
- //build the step for smaller grid
- nb_step_Y=((int)ymax-(int)ymin)/precision;
- nb_step_X=((int)xmax-(int)xmin)/precision;
- nb_step_Z=((int)zmax-(int)zmin)/precision;
- //build the array with the lines by smaller grid
- cc=0;
- n=0;
- for (long j=0;j<nb_step_Y;j++)
- {
- for (long k=0;k<nb_step_X;k++)
- {
- for (long l=0;k<nb_step_Z;l++)
- {
- cc=cc+1;
- dd=0;
- for (i=0;i<numx;i++)
- {
- if ((xmin-0.5*k < info2[i].X < xmin+0.5*k)&&(ymin-0.5*j < info2[i].Y < ymin+0.5*j)&& (zmin-0.5*l < info2[i].Z < zmin+0.5*l))
- {
- juju2[dd].X=info2[i].X;
- juju2[dd].Y=info2[i].Y;
- juju2[dd].Z=info2[i].Z;
- juju2[dd].A=info2[i].A;
- juju2[dd].B=info2[i].B;
- juju2[dd].C=info2[i].C;
- juju2[dd].F=info2[i].F;
- dd=dd+1;
- for (cc=0;cc<dd;cc++)
- {
- bar2[n].X = bar2[n].X+juju2[cc].X;
- bar2[n].Y = bar2[n].Y+juju2[cc].Y;
- bar2[n].Z = bar2[n].Z+juju2[cc].Z;
- bar2[n].A = bar2[n].A+juju2[cc].A;
- bar2[n].B = bar2[n].B+juju2[cc].B;
- bar2[n].C = bar2[n].C+juju2[cc].C;
- bar2[n].F = bar2[n].F+juju2[cc].F;
- };
- bar2[n].X = bar2[n].X/dd;
- bar2[n].Y = bar2[n].Y/dd;
- bar2[n].Z = bar2[n].Z/dd;
- n=n+1;
- };
- };
- };
- };
- };
- // recording of result in file txt
- FILE* fichier = NULL;
- fichier = fopen("C:\\Sample\\donnees.txt", "a+" );
- if (fichier != NULL)
- {
- fputs("Récapitulatif :\n", fichier);
- for (cc=1;cc<dd;cc++)
- {
- fprintf(fichier, "*", bar2[cc].X, "*", bar2[cc].Y, "*", bar2[cc].Z, "*", bar2[cc].A, "*", bar2[cc].B, "*", bar2[cc].C, "*", bar2[cc].F);
- }
- fclose(fichier); // On ferme le fichier qui a été ouvert
- cout << "writing is ok\n";
- }
- else
- {
- // errror
- printf("Impossible to open the file" );
- }
- system("pause" );
- return 0;
- };
|
|