Neo_Fr
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
18 sept. 2007 à 19:16
1- tu charge le fichier dans un buffer
2- tu modifie ce que tu veux
3- tu ecrit le buffer
En gros ca te donne un truc comme ca:
void __stdcall Replace(char *psz, char *szmotif, char *sznew) // de BruNews
{
int m, n;
char *c, *d;
m = strlen(szmotif);
if(!m) return;
c = psz;
n = strlen(sznew);
if(!n) goto supprime;
if(n > m) goto superieur;
if(n < m) goto inferieur;
if(!strcmp(szmotif, sznew)) return;
while(d = strstr(c, szmotif)) {
memcpy(d, sznew, n);
c = d + n;
}
return;
inferieur:
while(d = strstr(c, szmotif)) {
memcpy(d, sznew, n);
c = d + n;
strcpy(c, d + m);
}
return;
superieur:
while(d = strstr(c, szmotif)) {
memmove(d + n, d + m, strlen(d + m) + 1);
memcpy(d, sznew, n);
c = d + n;
}
return;
supprime:
while(d = strstr(c, szmotif)) {
strcpy(d, d + m);
c = d;
}
}
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HANDLE hFile;
DWORD br, bw, FileSize;
BYTE* Buffer;
hFile = CreateFile("C:\\ton_fichier.txt", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0);
FileSize = GetFileSize(hFile, 0);
Buffer = (BYTE*) HeapAlloc(GetProcessHeap(), HEAP_NO_SERIALIZE, (FileSize*2));
ReadFile(hFile, Buffer, FileSize, &br, 0);
Replace(Buffer, "mot_a_remplacer", "mot_qui_remplace");
SetFilePointer(hFile, 0, 0, FILE_BEGIN);
WriteFile(hFile, Buffer, strlen(Buffer), &bw, 0);
SetEndOfFile(hFile);
CloseHandle(hFile);
HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, Buffer);
return 0;
}
Neo_Fr