Aide pour un programme en C/C++ (compression en rar)
Dernière réponse : dans Programmation
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.
LANGAGE C
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 pour votre futur aide. Je me répète je débute soyez indulgent ^^.
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.
BATCH
@echo off
color E
echo.
echo.
echo BIENVENUE DANS LE PROGRAMME DE COMPRESSION/DEPLACEMENT
echo.
echo.
echo======================================================
echo.
echo ****** [VERSION 1.0 Createur: XXXXXXXX] *******
echo.
echo======================================================
echo.
echo.
rem ATTENTION COPIER BIEN LE FICHIER RAR.EXE DANS SYSTEM32
:menu
set /p VAR=DONNER LE CHEMIN D ACCES DE VOTRE REPERTOIRE A COMPRESSER (EXEMPLE C:\toto) ?
echo.
set /p VAR2=ENTRER LE NOM QUE VOUS VOULEZ POUR VOTRE FICHIER COMPRESSE (toto.rar) ?
echo.
set /p VAR3=DONNER LE CHEMIN D ACCES DU REPERTOIRE CIBLE (EXEMPLE \\192.168.1.1\toto) ?
echo.
echo.
echo -- CHEMIN D ACCES DU REPERTOIRE A COMPRESSER --
echo.
echo %VAR%
echo.
echo -- NOM DU FICHIER COMPRESSE --
echo.
echo %VAR2%
echo.
echo -- CHEMIN DU REPERTOIRE CIBLE --
echo.
echo %VAR3%
echo.
echo.
ECHO AVEZ VOUS BIEN RENTRE VOS CHEMINS D ACCES ?
echo.
ECHO 1) OUI
echo.
ECHO 2) NON
ECHO.
rem variable d'environnement (paramètre /P obligatoir)
set /p choix= VEUILLEZ ENTRER UN CHOIX S IL VOUS PLAIT (1 ou 2) :
if not %choix%=='' set choix=%choix:~0,1%
if %choix%==1 goto OUI
if %choix%==2 goto NON
retour au menu principale a cause d'un mauvais choix ou une faute de frappe
echo %choix% N EST PAS CORRECT !
goto menu
:OUI
rar a -m3 "%VAR2%" "%VAR%"
move /y "%VAR2%" "%VAR3%"
:NON
echo.
echo.
goto menu
pause
LANGAGE C
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
printf (" *** BIENVENUE DANS LE PROGRAMME DE COMPRESSION/DEPLACEMENT *** \n\n\n" );
printf (" ========================================================\n" );
printf (" == ****** [VERSION 1.0 Createur: XXXXXX] ******* == \n" );
printf (" ========================================================\n\n\n\n" );
{
/*ATTENTION COPIER BIEN LE FICHIER RAR.EXE DANS SYSTEM32*/
char var1[25] ="";
char var2[25] ="";
char var3[25] ="";
int var4 = 0;
printf("DONNER LE CHEMIN D ACCES DE VOTRE REPERTOIRE A COMPRESSER [EXEMPLE C:toto] ?\n" );
scanf("%s", &var1);
printf("\n" );
printf("ENTRER LE NOM QUE VOUS VOULEZ POUR VOTRE FICHIER COMPRESSE [toto.rar] ?\n" );
scanf("%s", &var2);
printf("\n" );
printf("DONNER LE CHEMIN D ACCES DU REPERTOIRE CIBLE ?\n" );
scanf("%s", &var3);
printf("\n" );
printf("Le chemin d acces de votre repertoire est : %s\n", var1);
printf("\n" );
printf("Le nom que vous desirez pour votre fichier est : %s\n", var2);
printf("\n" );
printf("Le chemin d acces du repertoire cible est : : %s\n", var3);
printf("\n" );
printf("Avez vous bien rentre vos chemins d acces ?\n\n" );
printf("0|OUI\n\n" );
printf("1|NON\n\n" );
scanf("%d", &var4);
printf("QUE VAUT VAR %d\n", var4);
if (var4)
printf("PASOK\n" );
else
printf("OK\n" );
}
return 0;
}
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 pour votre futur aide. Je me répète je débute soyez indulgent ^^.
Autres pages sur : aide programme compression rar
Lassé par la pub ? Créez un compte
1. Je te conseille de respecter le règlement de la rubrique et d'éditer ton message(c'est l'icône en bas à droite du message avec une feuille barrée d'un éclair) pour présenter correctement ton code en l'encadrant avec la balise [code]. ![[:storos:7] [:storos:7]]()
2. Je ne comprend pas trop pourquoi tu tiens absolument à faire en langage C quelque chose qui fonctionne bien en batch.
3. Tu devrais te renseigner sur la commande "system" (et ne pas oublier que stdio.h est ton ami)...
![[:storos:7] [:storos:7]](http://m.bestofmedia.com/sfp/design/usr/fr/smilies/1d/97/storos:7.gif)
2. Je ne comprend pas trop pourquoi tu tiens absolument à faire en langage C quelque chose qui fonctionne bien en batch.
3. Tu devrais te renseigner sur la commande "system" (et ne pas oublier que stdio.h est ton ami)...
Désolé j'ai posté un peu trop vite, normalement ça devrait être bon.
Alors je tiens à faire du langage C pour deux raisons. Premièrement et je veux apprendre à créer des programmes en langage C donc cette exemple de création de programme me convient parfaitement et dans un second temps (qui est encore très éloigné je pense) je veux réaliser un programme avec du graphisme un peu évolué qu'une fenêtre dos. Je pense que ce sera plus facile en C qu'en batch.
Depuis ce matin je cherche et j'ai testé cette commande
system ("rar VAR2 VAR1");
move /y ("VAR2 VAR3");
La partie system le debugger a l'air de la prendre en compte par contre le move (que j'ai repris de mon batch) y connait pas.
Saurais tu quelle commande je peux utiliser pour déplacer mon fichier rar créé ? Car encore une fois google n'est pas mon ami j'ai rien trouvé.
Si tu as des bons tuyaux ou des bons sites ou je puisse apprendre je suis preneur (le siteduzero m'a déjà beaucoup aidé)
En tout les cas merci pour ta réponse
Alors je tiens à faire du langage C pour deux raisons. Premièrement et je veux apprendre à créer des programmes en langage C donc cette exemple de création de programme me convient parfaitement et dans un second temps (qui est encore très éloigné je pense) je veux réaliser un programme avec du graphisme un peu évolué qu'une fenêtre dos. Je pense que ce sera plus facile en C qu'en batch.
Depuis ce matin je cherche et j'ai testé cette commande
system ("rar VAR2 VAR1");
move /y ("VAR2 VAR3");
La partie system le debugger a l'air de la prendre en compte par contre le move (que j'ai repris de mon batch) y connait pas.
Saurais tu quelle commande je peux utiliser pour déplacer mon fichier rar créé ? Car encore une fois google n'est pas mon ami j'ai rien trouvé.
Si tu as des bons tuyaux ou des bons sites ou je puisse apprendre je suis preneur (le siteduzero m'a déjà beaucoup aidé)
En tout les cas merci pour ta réponse
Salut,
La fonction system() permet d'exécuter une commande comme tu la taperais sur la ligne de commande du système.
Pour exécuter un programme externe en C, on utilise les fonctions exec**().
Pour copier un fichier (déplacer un fichier, c'est le copier puis le supprimer
), utilise les fonctions fread() et fwrite() (excellent exercice, puisque tu te formes) ou directement les API Windows.
La fonction scanf() est à prohiber. Apprends à te servir de fgets() à la place.
La fonction system() permet d'exécuter une commande comme tu la taperais sur la ligne de commande du système.
Pour exécuter un programme externe en C, on utilise les fonctions exec**().
Pour copier un fichier (déplacer un fichier, c'est le copier puis le supprimer
), utilise les fonctions fread() et fwrite() (excellent exercice, puisque tu te formes) ou directement les API Windows.La fonction scanf() est à prohiber. Apprends à te servir de fgets() à la place.
Je ne peux qu'approuver ce que tu dis zeb, mais fread() et fwrite() ne lui permettront pas de créer ou d'effacer un répertoire...
Si?
La fonction system est effectivement une méthode "brutale" et peu élégante mais pour traduire un batch, elle est la plus simple à utiliser... Même si dans l'optique d'apprendre le C j'aurais utilisé autre chose qu'un script qui ne présente que peu d'intérêt en C...
Et puisqu'on en est à critiquer le scanf(), il faudrait ajouter que le printf() est quand même un peu archaïque: j'utiliserais plutôt un cout...
EDIT: Et pourquoi pas un cin à la place du fgets au point où on en est?
Si?
La fonction system est effectivement une méthode "brutale" et peu élégante mais pour traduire un batch, elle est la plus simple à utiliser... Même si dans l'optique d'apprendre le C j'aurais utilisé autre chose qu'un script qui ne présente que peu d'intérêt en C...
Et puisqu'on en est à critiquer le scanf(), il faudrait ajouter que le printf() est quand même un peu archaïque: j'utiliserais plutôt un cout...
EDIT: Et pourquoi pas un cin à la place du fgets au point où on en est?
Storos a dit :
Tu as essayé de lancer ton move avec la commande "system"?
C'est fou ce qu'on peut faire avec "system"...
Du bon vieux temps sous ms-dos, move était l'une des commandes indispensables qui n'était pas interne (alors que toutes les autres, cd, copy, dir ... l'était. dieu sait pourquoi)
Depuis, il me semble que move est une commande interne, donc ça marchera pas avec system(), au même titre que "dir" et "copy".
La solution ? le plus simple c'est sans doute de mettre le RAR au bon endroit dès le début. Mais si on veut absolument utiliser move, même si c'est pas une bonne idée, alors
faut lancer cmd avec un switch pour lui dire de n'éxecuter que cette commande, j'me souviens plus du switch, ça doit être /C je crois. si c'est le cas,
system("cmd /c move ton.rar ton\repertoire");
Code :
#include <iostream>
#include <stdio.h>
int main(void){
printf (" *** BIENVENUE DANS LE PROGRAMME DE COMPRESSION/DEPLACEMENT *** \n\n\n");
printf (" ========================================================\n");
printf (" == ****** [VERSION 1.0 Createur: XXXXXX] ******* == \n");
printf (" ========================================================\n\n\n\n");
/*ATTENTION COPIER BIEN LE FICHIER RAR.EXE DANS SYSTEM32*/
char var1[50] ="";
char var2[50] ="";
char var3[50] ="";
char buf[259] ="";
int var4 = 0;
int quitNow=0;
while((quitNow==0)||(var4==0){
printf("Entrer le chemin d acces de votre fichier a compresser [EXEMPLE C:\\toto] ?\n");
scanf("%s", &var1);
printf("\n");
printf("Entrer le nom que vous voulez donner a votre fichier compresse [toto.rar] ?\n");
scanf("%s", &var2);
printf("\n");
printf("Donner le chemin d acces du repertoire cible ?\n");
scanf("%s", &var3);
printf("\n\n");
printf(" ================ RECAPITULATIF ================ ");
printf("\n\n");
printf("Le chemin d acces de votre repertoire est : %s", var1);
printf("\n\n");
printf("Le nom que vous desirez pour votre fichier est : %s", var2);
printf("\n\n");
printf("Le chemin d acces du repertoire cible est : %s", var3);
printf("\n\n");
printf(" ================================================ ");
printf("\n\n");
printf("Confirmer ? \n\n");
printf("\n");
printf("0 | Oui\n\n");
printf("1 | Non\n\n");
scanf("%d", &var4);
printf("\n\n");
if (var4==0){
printf("La compression de %s va commencer\n", var1);
printf("\n\n");
sctrcpy(buf,"C:\\Program Files (x86)\\WinRAR\\rar.exe a -m3 ", 47);
strcat(buf,var2,strlen(var2)-1);
strcat(buf,32,1);
strcat(buf,var1,strlen(var1)-1);
system (buf);
sctrcpy(buf,"move /y",7);
strcat(buf,var2,strlen(var2)-1);
strcat(buf,32,1); /* 32 correspond au caractere ASCII de l'espace*/
strcat(buf,var3,strlen(var3)-1);
system (buf);
return 0;
}
else {
printf("Quitter ? \n\n");
printf("\n");
printf("1 | Oui\n\n");
printf("0 | Non\n\n");
scanf("%d", &quitNow);
}
}
return 0;
}
Pour l'instant j'en suis la mais j'ai encore des bugs... mais ça va venir
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumProgramme pour decompresser fichier rar pour mac
- articlesQuel programme télécharger pour lire .rar
- ForumAide pour sc conviction téléchargement rar
- ForumConvertir format .rar en avi aide svp
- articlesProgramme c visual compression gratuit
- benchmarkProgramme compression dans vista
- benchmarkProgramme de compression d'image
- ForumCompression
- ForumAide mini programme code blocks
- ForumAide programme ti 89
- Voir plus
![[:storos:6] [:storos:6]](http://m.bestofmedia.com/sfp/design/usr/fr/smilies/48/b2/storos:6.gif)