begin process at 2012 05 30 23:04:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Fichier & Disque

 > 

Void , char* , long probleme


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Void , char* , long probleme

jeudi 26 avril 2007 à 15:50:20 | Void , char* , long probleme

kiki67100

Bonjour jai un probleme voici le code

#include <windows.h> // pour les 2 apis utilisés FindFirstFile() FindNextFile()
#include <iostream>
#include <unistd.h>  // cout<< et using namespace std;
using namespace std; // nouvelle norme C++

char *strput (char *main, char *toadd, unsigned int p)
{
    main+=p;
    while(*toadd) *main++ = *toadd++;
    *main = 0;
    return main;
}
void surpimmer(char* dir, long nb)
{
 WIN32_FIND_DATA IpFindFileData;
    HANDLE hdlfff;
    char dir[256] = "c:\\windows\\prefetch\\*.*";//puis ici jai effacé
    int size = strlen(dir)-3;//<== jai remplacer 3 par nb

    hdlfff = FindFirstFile(dir,&IpFindFileData);
    strput(dir, IpFindFileData.cFileName, size);
    cout<<IpFindFileData.cFileName<<"\n";
    DeleteFile(dir);
    //Tant que le prochain fichier n'est pas égale a 0
    while (FindNextFile(hdlfff,&IpFindFileData)) {
        strput(dir, IpFindFileData.cFileName, size);
        cout<<IpFindFileData.cFileName<<"\n";
        DeleteFile(dir);      
    }
    FindClose(hdlfff);
}

int main(int argc, char *argv[])
{
  
surpimmer("c:\\windows\\prefetch\\*.*",3);//puis ici ma fonction
    system("pause");
    return 0;
}

Puis je compile il ya la console qui souvre elle se referme et les fichier ne son pas effacé
Pouriez-vous maider? svp

Merci

Kevin

jeudi 26 avril 2007 à 16:21:01 | Re : Void , char* , long probleme

SAKingdom

Membre Club
Y'a pas d'erreur à l'exécution ? Car c'est sûr qu'il y a débordement tampon.
surpimmer("c:\\windows\\prefetch\\*.*",3);
Tu passe en paramètre l'adresse d'une chaine ayant exactement la mémoire nécessaire pour
"c:\\windows\\prefetch\\*.*". Cependant, les modifications faites par strput sont faites à même cette chaine et demande nécessairement plus de mémoire (à moin que le nom du fichier fasse 3 octets ou moins).

Tu as 2 choix. Soit tu copies le contenus du paramètre dans une zone aillant assez de mémoire directement dans la fonction
void supprimer (char* path, long nb)
{
 WIN32_FIND_DATA IpFindFileData;
    HANDLE hdlfff;
   char dir[300];
     int size = 0;

   
while(path[size]) {
        dir[size] =
path[size];
       ++size;
    }

    path[size] = 0;

    size-=3;

    hdlfff = FindFirstFile(dir,&IpFindFileData);
    strput(dir, IpFindFileData.cFileName, size);
    cout<<IpFindFileData.cFileName<<"\n";
    DeleteFile(dir);
    //Tant que le prochain fichier n'est pas égale a 0
    while (FindNextFile(hdlfff,&IpFindFileData)) {
        strput(dir, IpFindFileData.cFileName, size);
        cout<<IpFindFileData.cFileName<<"\n";
        DeleteFile(dir);      
    }
    FindClose(hdlfff);
}

(Impossible de tester tout de suite)

Soit tu passe une zone mémoire suffisante à la fonction:
char dir[256] ="c:\\windows\\prefetch\\*.*";

supprimer(dir, 3)
Cependant, dir sera modifié.

C++ (@++)

jeudi 26 avril 2007 à 16:23:38 | Re : Void , char* , long probleme

SAKingdom

Membre Club
Oups, ce serait plutot
size-=nb; et nonsize-=3;
pour ton code.

C++ (@++)

jeudi 26 avril 2007 à 16:33:36 | Re : Void , char* , long probleme

kiki67100

Merci me je comprend pas jai bien fait sa

#include <windows.h> // pour les 2 apis utilisés FindFirstFile() FindNextFile()
#include <iostream>
#include <unistd.h>  // cout<< et using namespace std;
using namespace std; // nouvelle norme C++

char *strput (char *main, char *toadd, unsigned int p)
{
    main+=p;
    while(*toadd) *main++ = *toadd++;
    *main = 0;
    return main;
}

void supprimer (char* path, long nb)
{
 WIN32_FIND_DATA IpFindFileData;
    HANDLE hdlfff;
   char dir[300];
     int size = 0;

    while(path[size]) {
        dir[size] = path[size];
       ++size;
    }

    path[size] = 0;

   size-=nb;

    hdlfff = FindFirstFile(dir,&IpFindFileData);
    strput(dir, IpFindFileData.cFileName, size);
    cout<<IpFindFileData.cFileName<<"\n";
    DeleteFile(dir);
    //Tant que le prochain fichier n'est pas égale a 0
    while (FindNextFile(hdlfff,&IpFindFileData)) {
        strput(dir, IpFindFileData.cFileName, size);
        cout<<IpFindFileData.cFileName<<"\n";
        DeleteFile(dir);      
    }
    FindClose(hdlfff);
}

 


int main(int argc, char *argv[])
{
  
supprimer("c:\\windows\\prefetch\\*.*",3);//puis ici ma fonction
    system("pause");
    return 0;
}

mais le code marche pas pourez tu maidé jai bien mis    size-=nb;

Kevin

jeudi 26 avril 2007 à 16:47:59 | Re : Void , char* , long probleme

SAKingdom

Membre Club
Reoups:

dir[size] = 0 et non path[size] = 0

C++ (@++)

jeudi 26 avril 2007 à 16:57:47 | Re : Void , char* , long probleme

SAKingdom

Membre Club
Réponse acceptée !
Orf et puis tant qu'à y être, on calculera la position du dernier \\ directement dans la boucle comme ça, pas nécessaire de le passer en paramère.

void supprimer (char* path)
{
  WIN32_FIND_DATA IpFindFileData;
  HANDLE hdlfff;
  char dir[300];
  int size = 0, i = 0;

  while(path[i]) {
    dir[i] = path[i];
    if(path[i++] == '\\') size = i;
  }
    dir[i] = 0;

    hdlfff = FindFirstFile(dir,&IpFindFileData);
    strput(dir, IpFindFileData.cFileName, size);
    DeleteFile(dir);

    while (FindNextFile(hdlfff,&IpFindFileData)) {
        strput(dir, IpFindFileData.cFileName, size);
        DeleteFile(dir);      
    }
    FindClose(hdlfff);
}

(J'ai enlevé les cout pour tester sur ma machine)

C++ (@++)

vendredi 27 avril 2007 à 12:12:33 | Re : Void , char* , long probleme

kiki67100

Merci beaucoup sa marche impec ta boucle calcule la longueur ok
Merci
Jai remis le cout sa marche aussi
Kevin


Cette discussion est classée dans : int, char, main, dir, ipfindfiledata


Répondre à ce message

Sujets en rapport avec ce message

main [ par payen ] salut,en fouillant un peu sur le site, j'ai vu qu'on pouvait declarer le main comme ca:int main(int argc, char * argv[], char * env[])a quoi correspo les Argument Du main() !!! [ par WaFFel ] bha expliquon mon problem !int main(int nArg,char* cArgs[]){ // ..... plein de ligne de code ...... }bha vous voyer ses une declaration d'un main d int main(int argc, char ** argv) [ par agent 047 ] Bonjour,mon probleme se porte sur le paramètre "char **argv" de la fonction principale utile pour connaître les adresses de chaque argument.Par exempl concatènation de char [ par nord666 ] Salut,J'aimerais pouvoir concatèner des char. Voici ce que je veux faire :int i = 0; //Peut être variable. Ce n'est que pour l'exemplechar * charConca simplifier prog. [ par F0ra ] Bonjour,Je cherche de l'aide pour simplifier mon programme au maximumVoici, le contenu du fichier txt :0 1 2 5 3 4 . 1 2 51 1 5 2 2 6 . 9 2 3 2 5 9 8 Sélection d'octet [ par dayvid75014 ] Bonjour à tous, Je récupère les octets de mon fichier vidéo dans un buffer "Buffer[]" et je voudrais sélectionner les octets 0x47 et je n'y a probleme affichage structure [ par lil_adriano ] Slt tous le monde j'ai un souci avec l'affichage de mes structures. je dois faire la gestion d'une pizzeria.j'ai cree les structure et quelques proced matrice de caractere en c [ par flofloo ] slt tout le monde voici mon probleme : char **Init_Matrice_IrcMSG(int ligne,int colone){     char **mat = NULL;     int i;     mat = char**, pointeur et fonction [ par psykocrash ] Salut,Je bosse sur un petit programme et je butte sur un problème de pointeurs. Voici le code source qui pose problème :--------------------#include # pb de concaténation [ par beatrice84 ] Bonjour à tous !Je suis entrain d'écrire un programme de compression selon la méthode de shannon-fano.J'ai un petit problème car je n'arrive pas à con


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales