Erreur de débutant - Debug Assertion Failed! [Résolu]

Signaler
Messages postés
123
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
30 mars 2009
-
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010
-
Bonjour,
Aujourd'hui, j'ai un gros pb, j'ai un petit programme qui me liste le contenu de mes répertoire dans des fichiers texte

Voici le code: (désolé d'avoir tout mis mais je sais pas d'où vient l'erreur)
-------------------------------------------
#include <windows.h>
#include "string.h"
#include
#include <fstream>

using namespace std;

class c_Param {
public:
char str_Repertoire[200];
char str_FichierLog[200];
};

void ListeFichier(c_Param p_Parametre)
{
int i_folder, i_file; //variable compteur dossiers et fichiers
WIN32_FIND_DATA File;
HANDLE liste;

ofstream Fichier(p_Parametre.str_FichierLog);
i_folder i_file 0;

Fichier << p_Parametre.str_FichierLog << " trace le contenu de " << p_Parametre.str_Repertoire << endl;

liste = FindFirstFile(p_Parametre.str_Repertoire,&File);

do
{
if(File.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (File.cFileName != "." && File.cFileName != "..")
{
Fichier << "<REP> " << File.cFileName << endl;
++i_folder;
}
}
else
{
Fichier << " "<< File.cFileName << " -> " << File.nFileSizeLow << " octects" << endl;
++i_file;
}
} while((FindNextFile(liste, &File)));

FindClose(liste);
Fichier << "Il y a " << i_folder << " dossiers et " << i_file << " fichiers." << endl;
Fichier.close();
cout << p_Parametre.str_FichierLog << " trace le contenu de " << p_Parametre.str_Repertoire << endl;
}

int main()
{
c_Param p_Parametre;
int i_ligne=1;
int i_nbligne=0;
char str_temp[100];
char c[2];
do
{
itoa(ligne,c,10);
GetPrivateProfileString("repertoire",c,"",str_temp,sizeof(str_temp),"C:\\Documents\\Mes Programmes\\Liste fichier\\liste.ini");
++i_nbligne;
++i_ligne;
}while (strlen(str_temp) > 0);

--i_nbligne;
i_ligne = 1;

while (1)
{
for(i_ligne;i_nbligne;ligne++)
{
itoa(i_ligne,c,10);
GetPrivateProfileString("repertoire",c,"",p_Parametre.str_Repertoire,sizeof(p_Parametre.str_Repertoire),"C:\\Documents\\Mes Programmes\\Liste fichier\\liste.ini");
GetPrivateProfileString("fichier",c,"",p_Parametre.str_FichierLog,sizeof(p_Parametre.str_FichierLog),"C:\\Documents\\Mes Programmes\\Liste fichier\\liste.ini");
ListeFichier(p_Parametre);
Sleep(5000);
}
}
return 0;
}
----------------------------------
Fin du code

Bon alors l'erreur est la suivant
Le premier fichier se génère, le second aussi et ensuite j'ai ça :
Microsoft Visual C++ Debug Library
Debug Assertion Failed!
Program: c:\ListeFichier.exe
file: fopen.c
line: 54
expression: *file != _T('\0')
For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.
Avec les boutons Abandonner - Réessayer et Ignorer

Et j'avoue que je pige que dalle à ce message.

Voilà le fichier ini si besoin
[repertoire]
1=c:\*.*
2=d:\*.*
[fichier]
1=c:\liste.txt
2=d:\liste.txt

Alors, je pense que je fais une erreur de type mais où?

Aidez moi pliz car je suis paumé là et en plus noob :'(

PsyCaDi

Sorry pour la taille du post

3 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Je ne te cache pas que ton style est très mauvais. Pourquoi utiliser la STL alors que ton code est clairement destiné à Windows?
Pour voir d'ou vient ton erreur, execute en debug (F5) et le programma s'arrêtera sur l'erreur.
Messages postés
123
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
30 mars 2009

ok
mais F5 m'envoi dans un fichier fopen.c
je vais chercher merci
PsyCaDi
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir

Ton code ne compile pas car dans main il y a une variable ligne qui n'est pas déclaré. Je suppose que c'est i_ligne ...

Dans ta derniere boucle for, il semble que tu ne sorts jamais de la boucle. Essaye de revoir ca !!!

Matt...