Bonjour,
j'ai un besoin assez simple, je voudrais remplacer toutes les occurences d'une chaîne de caractère dans un fichier résultant de l'exportation d'une branche de la base de registre (fichier .reg)...
J'ai tenté ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 char line[1000]; char *p; CString pathOldReg = _T("C:\\Device\\testOld.reg"); CString pathNewReg = _T("C:\\Device\\testNew.reg"); // on ouvre la source en lecture FILE *ficOldReg = fopen(pathOldReg, "r"); // on ouvre la cible en écriture FILE *ficNewReg = fopen(pathNewReg, "w"); if( !ficOldReg || !ficNewReg ) return FALSE; while(fgets(line, sizeof line, ficOldReg)){ <div style="margin-left:40px"> // on récupère la ligne lue jusqu'au retour-chariot p = strchr(line, '\n'); if(!p){ <div style="margin-left:40px"> //"Read line is too long" return FALSE;</div>} //on transforme le tableau line en chaîne de caractères *p = '\0'; std::string sMyLine = line; CString sLine(sMyLine.c_str()); sLine.Replace(_T("\\bhou"), _T("\\blah")); // on écrit dans le fichier final if(fprintf(ficNewReg, sLine.GetString()) == EOF){ <div style="margin-left:40px"> // "Cannot write new Reg file" return FALSE;</div>}</div>} fclose(ficNewReg); fclose(ficOldReg); return TRUE;
Voilà, je passe tout le temps dans l'erreur "Read line is too long", sinon avec les autres méthodes que j'ai essayé, je n'obtenais rien de bon en sortie...
Cela ne semble pas très compliqué, pourtant...quelqu'un a-t-il une idée ?
Merci d'avance !
Partager