begin process at 2008 09 05 12:13:38
1 237 200 membres
157 nouveaux aujourd'hui
14 312 membres club

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 : du C au C++ [ Système / Autre ] (nidhaletec)

du C au C++ le 16/06/2008 00:52:07

nidhaletec
si quelqu un m aide à convertir cette fonktion en C++ ; c écrit en C ;

void remplacer (char *filename, char *str,  char *occ)
{
    FILE *f = fopen(filename, "rb");
    char *buf;
    int size;

    if(!f) return;

    fseek(f, 0, SEEK_END);
    size = ftell(f);
   
    if((buf = (char*)malloc(size+1))) {
        char *pbuf = buf;
        int lenocc = strlen(occ), lenstr = strlen(str), last = 0;

        fseek(f, 0, SEEK_SET);
        buf[fread(buf, 1, size, f)] = 0;

        fclose(f);
       /* On supprime le fichier dans le cas ou str est plus petit que occ ce qui laisserait des caractères "parasites" à la fin du fichier */
        remove(filename);

       /* Cependant, si la création du nouveau fichier échoue, on pert l'ancien OOPS */
        if((f = fopen(filename, "wb"))) {
            while((pbuf = strstr(pbuf, occ))) {
                int pos = (pbuf-buf);
                if(pos) fwrite(&buf[last], 1, (pos-last), f);
   
                fwrite(str, 1, lenstr, f);
                pbuf += lenocc; last = (pbuf-buf);
            }
   
            fwrite(&buf[last], 1, size-last, f);
        }

        free(buf);
    }

    if(f) fclose(f);
}


Re : du C au C++ le 16/06/2008 12:53:33

luhtor
Ou est-ce marqué que cette fonction est en C ? elle est aussi en C++. Il n'y a rien a convertir.

Re : du C au C++ le 16/06/2008 13:14:04

rt15
Membre Club
Salut,

C'est peut être du C++ dans sur le plan syntaxique, mais ce n'en est pas sur le plan phylosophique.

Il faudrait remplacer les fopen par des stream, les malloc par des new...

En gros virer toutes les vielles include : stdio, stlib... par iostream et conosrts.

Cela dit pour le remove, je connais pas d'équivalent C++.

Un exemple de l'utilisation de stream pour lire un fichier ici.

fseek(f, 0, SEEK_END);
->
f.seekg(0, ios::end);


Pas à dire, l'objet, ça aura vraiment tout révolutionné !

Re : du C au C++ le 16/06/2008 13:20:14

rt15
Membre Club
Ah mais lol, j'aurais dû m'en douter !
Même auteur du topic...


Classé sous : char, size, buf, last, pbuf

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Téléchargements

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

Boutique

Boutique de goodies CodeS-SourceS