Ecrire un exe lentement problème 0D0A

sebastienmz Messages postés 139 Date d'inscription mardi 16 mai 2006 Statut Membre Dernière intervention 23 juin 2008 - 21 juin 2007 à 14:33
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 22 juin 2007 à 12:41
Bonjour
quand j'écrit mon exe
mon programme rajoute un \n quand il y a dans le buffer un \r et vice versa voici mon code :

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  printf("mapping du fichier\n");
  HANDLE hFileIn;
     DWORD dwsize, r=0, rw,dwFindDep,dwFindFin;
  DWORD i = 0,k=0,l=0,m=0;  //i pour le resu  k pour le filein  
  DWORD nbIndent=0;
  DWORD line=0;
  char c;
  char bufindent[500];
     char *szBuff,*szResu, *e, *e1, *e2;
     BOOL inchar=FALSE;
  hFileIn = CreateFile("1.exe", GENERIC_READ, 0, 0, OPEN_ALWAYS, 0, 0);
  if(hFileIn == INVALID_HANDLE_VALUE)
    goto Erreur;      

  dwsize = GetFileSize(hFileIn, NULL);
 
  if(dwsize == INVALID_FILE_SIZE )
   goto ErreurSize;

   
     szBuff =(CHAR *) malloc(dwsize+1);

     memset(szBuff,0,sizeof(szBuff));

    
  ReadFile(hFileIn, szBuff, dwsize, &rw, NULL);

     szBuff[dwsize]='\0';
     if(rw != dwsize)
        goto ErreurMem;
  CloseHandle(hFileIn);
     printf("fin du mapping du fichier ...\nTeste de l'antivirus\n");
     
     

  FILE * out;

  int size;
  out = fopen("C:\\test\\temp.exe","w");
  if (!out)
    return 0; 
  size=1; 
  for (i=0,k=0;k<=dwsize;k++,i++){
    if (i>=500){
      sleep(10);
      i=0;
    }
   
      size=fprintf(out,"%c",szBuff[k]);//fwrite(&szBuff[k], 1,1,out);
     
       if (size!=1){
      printf("OULA ECRITURE:%d BLOQUE a :%d\n",size,k);
     
      break;
   }    
     
  }
  fclose(out);
  free(szBuff);

  system("PAUSE");   
  return 0;
 
 
 
 
 
 
 
 
 

;
return 1;
Erreurtropg:
  printf("ERREUR trop grand\n");
     CloseHandle(hFileIn);    
     return 0;           
ErreurMem:
  printf("erreur memoire\n");
     free(szBuff);
     CloseHandle(hFileIn);
     return 0;      
ErreurSize:
     CloseHandle(hFileIn);
     printf("ERREUR SIZE\n");
     return 0;
Erreur:
  printf("ERREUR\n");
  free(szBuff);
  CloseHandle(hFileIn);
  return 0;
}

HELP PLZ
SVP je part chez mes grand parant a 3H30 et j'ai pas de pc là ba répondez moi VITTTTE
merci

____
[www.sebastien-metthez.com www.sebastien-metthez.com]
le problème vient souvent de l'interface chaise clavier.

2 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 juin 2007 à 17:31
C'est quoi ce mélange stdio et API Win ???

Ecrire lentement, c'est utile ? Ecris en 1 coup et fais un Sleep() 1 seule fois.

ciao...
BruNews, MVP VC++
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
22 juin 2007 à 12:41
Salut,

Pour tout passer en Win32, tu peux utiliser WriteFile pour écrire les caractère un à un.

Pour tout passer en stdio, tu peux utiliser fread pour récupérer le contenu du fichier.
0
Rejoignez-nous