CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

J´aide les personne en C/C++

Tav
Tav
Niveau 5
31 mai 2005 à 18:45:07

Salut,
pour mon programme de nettoyage, j´ai un problème à cause d´une partie de code qui doit supprimer les fichiers temporaires et inutiles.
masi elle marche mal, alors pour essayer de résoudre le problème j´ai essayé de l´isoler, mais j´y arrive toujours pas.
Merci ; )

http://rafb.net/paste/results/5keYiC70.html

Tav
Tav
Niveau 5
31 mai 2005 à 18:47:26

Désolé, mais ces deux lignes sont en trop ; )

char szUserProfil[200];
char szWindir[200];

Elle me servait tout à l´heure.

godrik
godrik
Niveau 30
31 mai 2005 à 19:01:36

il y a un truc genial en C/C++ ca s´apelle les commentaires! :)

for(int Count=65;Count<=90;Count++)
c´est quoi ces magic numbers ?

char szWayDirectory[1024];
char szUserProfil[200];
char szWindir[200];
encore des magics numbers

SetCurrentDirectory ( szWayDirectory);
c´est un peu bourrin ca !

bool DeleteAllFiles(char *szWayDirectory, char *szNameFile)
cette fonction ne renvoie pas de valeur dans tout les cas.

char szDirectoryName2[2048];
strcat(szDirectoryName2,szWayDirectory);
ca, c´est sur ca va pas marcher
tu fait un strcat dans un truc pas initialiser
tu voulais faire un strcpy
d´ailleurs tu ne t´en sers pas, alors je ne sais pas pourquoi tu l´as mis...

Bon, sinon, pour toi, aussi DeleteFile ca peut renvoyer des erreurs...

DelTypeFiles("ReadMe.txt");
DelTypeFiles("Readme.txt");
DelTypeFiles("readme.txt");
apriori, windows ne gere pas la casse dans les noms de fichier, alors tout ca c´est pareil.

hr = GetDriveType(szCharDrive);
if(hr==3)
meme commentaire qu´au dessus

sur MSDN:
To examine a directory that is not a root directory, use the path to that directory, without a trailing backslash. For example, an argument of " C:\windows" returns information about the directory " C:\windows", not about a directory or file in " C:\windows". An attempt to open a search with a trailing backslash always fails.

donc ca ca veut dire qu´il faut lire c:\
et pas c: comme tu le fait la:
sprintf(szCharDrive, " %c:", Buff);

et sinon, la recursivite c´est mal. prefere l´emploi d´une liste.

Ca fait pas mal, je m´arrete la

Tav
Tav
Niveau 5
31 mai 2005 à 19:08:06

Godrik, t´es vraiment sympa.
Mais bon, t´as des commenta

Tav
Tav
Niveau 5
31 mai 2005 à 19:33:36

Godrik, t´es vraiment sympa :D.

Mais bon, t´as des commentaires constructifs au moins.
Les nombres 65 à 90 sont les caractères ASCII pour les lettres a à z. Et hr==3: 3 est la valeur renvoyée par la fonction GetDriveType: c´est le type Disque Dur ou Partition.

Pour les commentaires: c´est vrai.

Pour ces deux lignes:
char szUserProfil[200];
char szWindir[200];
j´avais dit que j´avias oublié de les enlever du code mais elle me servaient avant à stocker les variables WINDIR et USERPROFILE que j´utilisais pour une autre fonction que j´ai enlevée du programme-test.

Pour le barbarisme, c´est tout ce que je connais, mais si t´as un autre moyen j´suis tout ouï.

Si je transforme ca:

char szDirectoryName2[2048];
strcat(szDirectoryName2,szWayDirectory);
en ca:

szDirectoryName[2048];
strcpy(szDirectoryName2,szWayDirectory);

et que je n´utilise plus que szWayDirectory tout court?

Pour le type de reotur, si y´en a un à la fin qui est pour si la recherche foire.

Et la j´ai pas compris:
" donc ca ca veut dire qu´il faut lire c:\
et pas c: comme tu le fait la:
sprintf(szCharDrive, " %c:", Buff); "

Merci pour la casse et je vais essayer de faire des commentaires utiles ; ).

http://rafb.net/paste/results/TVNr8A31.html

dnob700
dnob700
Niveau 10
31 mai 2005 à 21:51:49

pour répondre à l´une des question de godrik et pour ton information, il est " bon" de toujours utiliser la valeur 260 plus précisemment la constante MAX_PATH lorsque tu initialise des chaines qui vont contenir des chemins d´accès car c´est le maximum autorisé par windows. Donc 200 peut dans certain cas s´avéré trop court et aller au delà est du gachis de mémoire.

dynoplasmma
dynoplasmma
Niveau 9
31 mai 2005 à 22:21:55

comment reagir a ce que ecrit la personne :

if(feu)
{
b=-10
}

C´est ds les parenthees apres le if, si le mec ecrit ca, il se passe ca, vous comprenez ?

dynoplasmma
dynoplasmma
Niveau 9
31 mai 2005 à 22:56:27

voila j´ai fait de mon mieux :
http://rafb.net/paste/results/wrb5NU74.html

un debut de ti rpg mais ca se lance, mais la vie s´affiche a l´infinie.

dynoplasmma
dynoplasmma
Niveau 9
31 mai 2005 à 23:14:10

bon je vais dormir, je suis crevé, allé sur cette page et aidez moi:
https://www.jeuxvideo.com/forums/3-31-8273016-258-0-1-0-0.htm#frp

A plus, ciao !

Ptival
Ptival
Niveau 10
31 mai 2005 à 23:31:18

Relis-toi -_-

b=-10;
->
b-=10;

Ptival
Ptival
Niveau 10
31 mai 2005 à 23:32:25

Pis ça ça veut strictement rien dire :

if("feu")

C´est comme

if(true)
if(1)
. ..

dynoplasmma
dynoplasmma
Niveau 9
01 juin 2005 à 13:08:18

comment faire pour que quand l´utilisateurmette : feu, ca atteragit avec le programme ?

Tav
Tav
Niveau 5
01 juin 2005 à 13:34:46

tu le met dans une chaine de caractere style:

char attaque[10];

, t´inclues la bibliothèque < string.h> et tu fais -->

if(strcmp("feu",attaque)==0)
{
/ /Code quand le joueur attaque avec le feu

}

et ainsi de suite...

dynoplasmma
dynoplasmma
Niveau 9
01 juin 2005 à 13:37:26

Je vais esssayé tout de suite :ok: :merci:

godrik
godrik
Niveau 30
01 juin 2005 à 13:44:06

pour dnob700:
for(int Count=65;Count<=90;Count++)

il serait mieux de mettre
for ( char Buff=´a´; Buff<=´z´; Buff++)
c´est plus comprehensible

if(hr==3)
non
if ( hr==DISQUEDUROUPARTITION)
avec un super " #define DISQUEDUROUPARTION 3" avant

en plus, tu n´as pas lu tout mon message...
si tu lis la racine du disque C tu doit passer c:\ a findfirstfile
mais si c´est le repertoire toto a la racine de c, tu dois passer c:\toto
encore une fois s tu lu
:"http://msdn.microsoft.com/library/default.asp?ur
l=/library/en-us/fileio/fs/findfirstfile.asp"
?

Sinon pour ne pas faire de recursivite, il faut utiliser une pile ou une file de chaine de caractere alloués dynamiquement.

dans deleteallfiles tu fais
strcpy(szDirectoryName,szWayDirectory);
strcat(szDirectoryName,"\\");
strcat(szDirectoryName,FindData.cFileName);
si tu as passé " c:\" ( comme tu devrais le faire au debut), il y a deja un \ ce n´est donc pas la peine de le rajouter.

encore deleteallfiles
cette fonction ne renvoye pas de valeur si tout ce passe bien. Ton compilateur ne te le dit pas ?
est il regle au plus haut niveau de warning ?

Sinon, oui, je suis toujours cassant dans mes commentaires.

Je rappele ( pas que pour toi) les regles d´une bonne programmation:
->pas de magic number
->un code commenté
->la documentation de toute les fonctions utilisé a été lu 50 fois.
->tous les codes d´erreurs des fonctions doivent etre verifié, un message d´erreur doit etre ecrit sur std::cerr le cas échéant.

dynoplasmma
dynoplasmma
Niveau 9
01 juin 2005 à 14:24:27

Mais ca sert a rien les commentaires ?

godrik
godrik
Niveau 30
01 juin 2005 à 14:32:34

dynoplasma:
quand tu aura un code de 15Klignes avec des pointeurs de pointeurs de pointeurs et des hash table de liste chaine, tu sera content d´avoir des commentaires...

Je reprends un prototype non commenté que j´ai vu ici:
SDL_Surface* Vram(char* fichier)
bah, la je ne comprends rien
si j´avais lu
/ * la fonction Vram charge un fichier bitmap en memoire video*/
j´aurais deja un peu plus compris, mais j´aurais prefere
/ * la fonction Vram charge un fichier bitmap en memoire video.
char* fichier est le chemin relatif ( depuis le repertoire courant) ou absolu ( mais non URL) du ficheir bitmap a charger
la fonction renvoye un pointeur vers une SDL_Surface. Cette objet devra etre libere avec la fonction SDL_FreeSurface.
En cas d´erreur cette fonction renvoie NULL*/
ca, ca aurait ete un commentaire utile

dynoplasmma
dynoplasmma
Niveau 9
01 juin 2005 à 14:34:39

Ouais mais si tu connais cette ligne, ca ne sert a rien de mettre sa definition ! a la imite quelques petits commentaires mais pas une definition !

Tav
Tav
Niveau 5
01 juin 2005 à 14:37:04

j´espère que j´ai assez mis de commentaires cette fois-ci . ..

J´ai pas utilisé #define DISQUEDUROUPARTITION 003 parce que sa encombre le code alors qu´il suffit de mettre un commentaire pour expliquer . ..

Mon compilo est Dev 4.9.9.1, alors je sais pas comment le régler, mais toi tu dois le savoir . ..

" tous les codes d´erreurs des fonctions doivent etre verifié, un message d´erreur doit etre ecrit sur std::cerr le cas échéant. " --> c´est un code amateur, j´fais ca pour le plaisir et si je commence à bourrer mon code de ca j´suis pas sortit de la merde, déjà que je galère . ..

J´utilise la récursivité parce qu´on me l´a conseillé.

" en plus, tu n´as pas lu tout mon message... " Si, seulement il semble que toi tu ne lise pas tout mon message parce que j´ai expliqué que j´avais pas capté.

Et je vois pas l´interet de supprimer les strcat(szDirectoryName,"\\"); vu que je passe par exemple " C:" à ma fonction ClearDirecotory.
et j´ai utilisé cette fonction des tas de fois pour vider les fichiers temporaires ( en passant un chemin style " C:\Windows\Temp") et sa marchait très bien.
Or là ( http://rafb.net/paste/results/e5llVB14.html ) ca ne supprime que ce qui est à la racine du disque dur, et pas le reste...

Et du respect pour mon travail, j´ai passé deux semaines sur ces fonctions à chercher des documents sur comment faire ca, pis après à voir ce qui marchait pas. Chez moi ca représente près de 50 heures de travail et de recherche. :regardnoir:

Tav
Tav
Niveau 5
01 juin 2005 à 14:40:27

Ca rate même en mettant:

if(hr==3)
{
strcat(szCharDrive,"\\");
ClearDirectory(szCharDrive,szNameFile);
}

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment