Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Ecrire un exe lentement problème 0D0A [ Windows / Fichier & Disque ] (sebastienmz)

jeudi 21 juin 2007 à 14:33:30 | Ecrire un exe lentement problème 0D0A

sebastienmz

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
le problème vient souvent de l'interface chaise clavier.

jeudi 21 juin 2007 à 17:31:21 | Re : Ecrire un exe lentement problème 0D0A

BruNews

Administrateur CodeS-SourceS
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++

vendredi 22 juin 2007 à 12:41:06 | Re : Ecrire un exe lentement problème 0D0A

rt15

Membre Club Administrateur CodeS-SourceS
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.




Cette discussion est classé dans : printf, szbuff, size, hfilein, dwsize


Répondre à ce message

Sujets en rapport avec ce message

Liste Chainé en C++... [ par NitRic ] Bonjour, j'aimerais si possible un petit exemple ou bien un site qui parle des Liste Chainé en C++, pour la créée c'est ok mais c avec le fonctionneme Pb avec DRAWTEXTW [ par BULBY ] Bonjour, J'essaye de faire un tout petit programme qui affiche une chaine de caractère en japonais (unicode). Avec la fonction TextOutW, pas de problè Mathématique sur le discriminant? [ par jia2812 ] #include #include int a,b,c,discriminant;float X1,X2,X;void main(){printf("\t\t##########################\n");printf("\t\t## ##\n Bonjour, [ par Jarodx64 ] je voudrai comment faire pour faire entrer un nom(char) :Exemple avecprintf("Entrez un nombre);scanf("%d",&a);Moi je voudrai faireprintf("Entrez votre Sortie formatée avec printf: précision [ par GoldenEye ] J'ai besoin d'afficher avec printf un double avec une précision dynamique.Par exemple, l'user rentre une précision epsilon( 0.01 par ex ) et je veux l Reprendre la main sur une erreur de SCANF [ par gollum ] voila : mon monceau de codec='n';printf("Entrer le coeff %d du terme %d \n",i,i);result = scanf("%f",&coef); while (result==0 && c=='n'){ printf("f Debutant : ecrire et lire un fichier txt [ par manu ] Bonjour a tous.Je debute, aussi desole.... :)Je cherche donc a ecrire dans un fichier txt, puis a lire ce fichier ligne a ligne, faire un split / expl Palindrome et espaces [ par TheRecliner ] Bonjour,je dois faire petit programme qui détécte si un phrase est un plaindrome ou non....j'ai bien résussi à faire cette détection mais uniquement p Probleme de reception dans un serveur visual C++ pour windows [ par alfred ] Salut a tous!!g un probleme dans mon serveur le recv renvoie la valeur -1 et je ne vois pas pouquoi.voici les source du client et du serveurLe Serveur Probleme reception sur un serveur windows en vc++ [ par alfred ] Salut a tous!!g un probleme dans mon serveur le recv renvoie la valeur -1 et je ne vois pas pouquoi, toute mes socket sont positives le client envois


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,530 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.