2010-08-18 3 views
1

Possible en double:
opening a rar file by cextraire un fichier rar par code c

Je dois extraire un fichier rar en utilisant le code c. J'ai d'abord essayé de trouver les bibliothèques. Je l'ai eu de http://www.unrarlib.org/. Mais il a été construit en 2002. Il ne supporte donc pas le format rar actuel. Puis j'ai vérifié http://www.rarlabs.com/rar_add.htm. Il a des librairies mais en C++. Je ne sais rien de C++, donc je ne peux pas les utiliser. J'ai essayé d'utiliser l'outil de ligne de commande unrar en utilisant la fonction du système. Quand j'ai utilisé unrar dans CMD, Il a extrait le fichier mais quand je l'ai utilisé en C, (commande était system ("unrar -e -p password protected_file.rar");) Il vient d'ouvrir le archieve. Il n'a pas extrait le fichier. Maintenant, je ne sais pas quoi faire ensuite? Quelqu'un peut-il me suggérer quelque chose ??

Ceci est le code que j'utilise pour ouvrir le fichier rar. Dans la commande système, ranjit est le mot de passe. Il donne l'erreur undefined symbol_system dans le module + le nom du fichier. Quelqu'un peut-il m'aider? Je me bats là-dessus depuis deux jours.

#include<stdio.h> 
#include<stdlib.h> 
int main(int argc, char **argv) 
    { 
    char file[20]; 
    char file2[50] = "F:\\Program Files\\WinRAR\\unrar.exe"; 
    printf("enter the name of the rar file : "); 
    gets(file); 
    puts(file); 
    system(("%s e -p ranjit %s >C:\stdout.log 2>C:\stderr.log",file2, file)); 
    getchar(); 
    return 0; 
    } 
+1

Pourquoi? – Greg

+1

Dupliquer: http://stackoverflow.com/questions/3514854/opening-a-rar-file-by-c – James

+0

Cette question fait suite à http://stackoverflow.com/questions/3514854/opening-a-rar -file-by-c, posté par le même auteur. L'auteur aurait dû modifier les informations supplémentaires dans la question d'origine. – bta

Répondre

0

La page de manuel pour unrar est here. Selon le manuel, la syntaxe de commande est:

unrar <command> [-<switch 1> -<switch N>] archive [files...] [path...] 

Vous mentionnez que vous utilisez la commande unrar -e -p password protected_file.rar pour extraire l'archive. Essayez d'ajouter sur le paramètre final facultatif [path...] et voir si cela aide. Les chances sont, le chemin est supposé être le répertoire courant quand il est omis. Lorsque vous exécutez la commande à partir du shell, tout fonctionne comme prévu. Lorsque vous exécutez la commande system à partir de C, vous ne savez pas quel est le répertoire en cours. Spécifiez manuellement un répertoire dans lequel extraire l'archive et voyez si cela change quelque chose.

Si vous rencontrez toujours des problèmes, essayez de rediriger la sortie standard et l'erreur standard de votre commande unrar vers un fichier texte. L'utilitaire peut vous donner des informations importantes sur la console que vous ne voyez pas parce que vous ne le lancez pas directement. Essayez:

system("unrar -e -p password file.rar >C:\stdout.log 2>C:\stderr.log"); 

et de vérifier les fichiers journaux après la fermeture de votre programme. Pourquoi cela est-il marqué comme programmation fonctionnelle?

Questions connexes