Aide pour un programme en C/C++ (compression en rar)

Aide pour un programme en C/C++ (compression en rar) - C - Programmation

Marsh Posté le 19-04-2010 à 09:26:17    

Voici un programme que j'ai réalisé avec un batch:
 
Il sert a prendre un répertoire ensuite à le compresser et à le coller ailleurs. Exemple: je prend le répertoire toto dans c:\toto je le compresse en toto.rar et je le colle dans D:\
 
Je débute la programmation et j'essaie de reproduire ce programme en langage C (je l'ai mis en bas). J'ai pu reproduire le début mais je ne sais pas comment lancer une compression. Pouvez-vous m'aiguiller ? J'ai fait pas mal de recherche avec google mais aucun résultat.
 

Code :
  1. BATCH
  2. @echo off
  3. color E
  4. echo.
  5. echo.
  6. echo BIENVENUE DANS LE PROGRAMME DE COMPRESSION/DEPLACEMENT
  7. echo.
  8. echo.
  9. echo======================================================
  10. echo.
  11. echo  ****** [VERSION 1.0 Createur: XXXXXXXX] *******
  12. echo.
  13. echo======================================================
  14. echo.
  15. echo.
  16. rem ATTENTION COPIER BIEN LE FICHIER RAR.EXE DANS SYSTEM32
  17. :menu
  18. set /p VAR=DONNER LE CHEMIN D ACCES DE VOTRE REPERTOIRE A COMPRESSER (EXEMPLE C:\toto) ?
  19. echo.
  20. set /p VAR2=ENTRER LE NOM QUE VOUS VOULEZ POUR VOTRE FICHIER COMPRESSE (toto.rar) ?
  21. echo.
  22. set /p VAR3=DONNER LE CHEMIN D ACCES DU REPERTOIRE CIBLE (EXEMPLE \\192.168.1.1\toto) ?
  23. echo.
  24. echo.
  25. echo -- CHEMIN D ACCES DU REPERTOIRE A COMPRESSER --
  26. echo.
  27. echo %VAR%
  28. echo.
  29. echo -- NOM DU FICHIER COMPRESSE --
  30. echo.
  31. echo %VAR2%
  32. echo.
  33. echo -- CHEMIN DU REPERTOIRE CIBLE --
  34. echo.
  35. echo %VAR3%
  36. echo.
  37. echo.
  38. ECHO AVEZ VOUS BIEN RENTRE VOS CHEMINS D ACCES ?
  39. echo.
  40. ECHO 1) OUI
  41. echo.
  42. ECHO 2) NON 
  43. ECHO.
  44. rem variable d'environnement (paramètre /P obligatoir)
  45. set /p choix= VEUILLEZ ENTRER UN CHOIX S IL VOUS PLAIT (1 ou 2) :
  46. if not %choix%=='' set choix=%choix:~0,1%
  47. if %choix%==1 goto OUI
  48. if %choix%==2 goto NON 
  49. retour au menu principale a cause d'un mauvais choix ou une faute de frappe
  50. echo %choix% N EST PAS CORRECT !
  51. goto menu
  52. :OUI
  53. rar a -m3 "%VAR2%" "%VAR%"
  54. move /y "%VAR2%" "%VAR3%"
  55. :NON
  56. echo.
  57. echo.
  58. goto menu
  59. pause


 
LANGAGE C
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. int main(int argc, char *argv[])
  4. {
  5.     printf (" *** BIENVENUE DANS LE PROGRAMME DE COMPRESSION/DEPLACEMENT *** \n\n\n" );
  6.     printf ("    ========================================================\n" );
  7.     printf ("    == ****** [VERSION 1.0 Createur: XXXXXX] ******* == \n" );
  8.     printf ("    ========================================================\n\n\n\n" );
  9.             {
  10. /*ATTENTION COPIER BIEN LE FICHIER RAR.EXE DANS SYSTEM32*/
  11.   char var1[25] ="";
  12.   char var2[25] ="";
  13.   char var3[25] ="";
  14.   int var4 = 0;
  15.   printf("DONNER LE CHEMIN D ACCES DE VOTRE REPERTOIRE A COMPRESSER [EXEMPLE C:toto] ?\n" );
  16.   scanf("%s", &var1);
  17.   printf("\n" );
  18.   printf("ENTRER LE NOM QUE VOUS VOULEZ POUR VOTRE FICHIER COMPRESSE [toto.rar] ?\n" );
  19.   scanf("%s", &var2);
  20.   printf("\n" );
  21.   printf("DONNER LE CHEMIN D ACCES DU REPERTOIRE CIBLE ?\n" );
  22.   scanf("%s", &var3);
  23.   printf("\n" );
  24.   printf("Le chemin d acces de votre repertoire est : %s\n", var1);
  25.   printf("\n" );
  26.   printf("Le nom que vous desirez pour votre fichier est : %s\n", var2);
  27.   printf("\n" );
  28.   printf("Le chemin d acces du repertoire cible est : : %s\n", var3);
  29.   printf("\n" );
  30.   printf("Avez vous bien rentre vos chemins d acces ?\n\n" );
  31.   printf("0|OUI\n\n" );
  32.   printf("1|NON\n\n" );
  33.   scanf("%d", &var4);
  34. printf("QUE VAUT VAR %d\n", var4);
  35. if (var4)
  36.      printf("PASOK\n" );
  37. else
  38.      printf("OK\n" );
  39.             }
  40.   return 0;
  41. }


 
Merci d'avance pour votre futur aide. Je me répète je débute soyez indulgent ^^.


Message édité par shining666fr2 le 19-04-2010 à 13:59:05
Reply

Marsh Posté le 19-04-2010 à 09:26:17   

Reply

Marsh Posté le 19-04-2010 à 10:08:02    

1/ Il y a des balises pour le code
2/ Qu'est-ce que viennent faire  

Code :
  1. #include <iostream>
  2. using namespace std;


dans un programme en C
3/ cf system()


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 19-04-2010 à 10:20:18    

Pour l'instant vu que je débute je pique des bouts de code un peu partout ou j'en trouve et je test je modifie et surtout je galère.
 
Je n'arrive à apprendre qu'en bidouillant (dans un premier temps) avec des exemples. Normalement je sais on apprend la théorie et on pratique après....
 
Je ne sais pas a quoi cela correspond:
   1. #include <iostream>
   2.
   3. using namespace std;
 
Mais si ça ne sert a rien je peux le supprimer.


Message édité par shining666fr2 le 19-04-2010 à 10:21:00
Reply

Marsh Posté le 19-04-2010 à 10:36:10    

Hm. À ce stade, je n'ai qu'un conseil à donner : apprends le langage avant de t'y mettre, sinon tu n'arriveras à rien.

Reply

Marsh Posté le 19-04-2010 à 10:53:24    

J'ai lu et réalisé tout les programmes d'exemples présent sur le siteduzero.fr malheureusement il n'aborde que le début de la programmation (les printf, les scanf, %d, %s, char, int etc...) Tout ça j'ai compris.
 
Maintenant je cherche a créer mon programme qui fonctionne très bien en batch en C. Je ne sais pas comment lancer une compression en rar (ou zip) en langage C.  Quelqu'un peut m'aider ? J'ai juste besoin de ça pour moi c'est compliqué car je connais pas encore mais pour vous je pense que c'est simple. Merci d'avance

Reply

Marsh Posté le 19-04-2010 à 11:44:38    


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 19-04-2010 à 13:14:27    

Sous Windows, on a un peu de choix :  
 
- system() (C run-time library - ANSI ('system()') or Win NT ('_wsystem()'))
- _exec() et ses variantes (C run-time library - Win 95, Win NT)
- _spawn() et ses variantes (C run-time library - Win 95, Win NT)
- WinExec() (Win32 API)
- ShellExecute() (Shell API)
- ShellExecuteEx() (Shell API)
- CreateProcess() (Win32 API)
- CreateProcessAsUser() (Win32 API)
- CreateProcessWithLogonW() (Win32 API)


Message édité par olivthill le 19-04-2010 à 13:15:42
Reply

Marsh Posté le 19-04-2010 à 13:58:20    

Merci pour toutes ces commandes, j'en prend bonne note.
 
Cette fois-ci je bloque sur le code pour déplacer d'un endroit à un autre. Si tu as d'autres bons tuyaux je suis preneur ^^. Merci d'avance

Reply

Marsh Posté le 20-04-2010 à 00:36:00    

MoveFile ou  MoveFileEx (win32 api)
Sinon system("move <arguments qui vont bien>" );


Message édité par breizhbugs le 20-04-2010 à 00:37:44
Reply

Marsh Posté le 20-04-2010 à 08:33:23    

Ou tout simplement rename(), en standard.

Reply

Marsh Posté le 20-04-2010 à 08:33:23   

Reply

Marsh Posté le 20-04-2010 à 13:02:33    

Parfait merci beaucoup. Dès que le programme sera terminé je le publierai. Merci encore

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed