Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Nom de fichier en argument en C++



  1. #1
    dimofzion

    Nom de fichier en argument en C++


    ------

    Salut a tous,

    je voudrais savoir comment mettre un nom de fichier en argument d'une fonction C++.

    Par exemple, si je veux copier une serie de fichiers via le C++ en effectuant la boucle en C++ et pas en shell, commemt faire ? Par exemple je voulais copier les fichers 01.dat, 02.dat etc mais la ligne suivante ne marche pas :

    (for i=0;i<=N;i++){"system(cp 0" i ".dat ";}

    Comment faire ?
    Merci !

    -----

  2. Publicité
  3. #2
    Philder

    Re : Nom de fichier en argument en C++

    Bonjour,

    Je ne suis pas sur de ce que tu veux faire.
    Pour mettre un nom de fichier en parametre d'une fonction il faut que tu passes un char * .
    Si tu veux les nom de fichier en argument de ton programme il faut que tu regardes dans (int argc, char**argv) en parametres de ta fonction main.

  4. #3
    Philder

    Re : Nom de fichier en argument en C++

    Ah et si tu veux passer plusieurs noms de fichiers, le mieux c'est d'avoir un tableau de char *, donc un char** comme pour le argv du main.

    Soit dit en passant tu iras plus vite en shell je pense.
    Du genre cp ??.dat /labas

  5. #4
    lakrids

    Re : Nom de fichier en argument en C++

    Salut,

    Tout d'abord, qu'est-ce que ça veut dire :

    Code:
    (for i=0;i<=N;i++){"system(cp 0" i ".dat ";}
    Tu voulais pas dire plutôt

    Code:
    for (i=0;i<=N;i++){system("cp 0 i .dat") ;}
    Si tu veux copier un fichier, tu peux aller voir la documentation de fstream. Tu peux créer une fonction qui copie un fichier très rapidement. De plus, je te conseille vivement d'éviter d'écrire du code qui n'est pas portable.
    Appeler le shell UNIX ne vas pas fonctionner sous Wind@ws par exemple. A la limite, tu peux aussi aller chercher sur google s'il existe des librairies qui font ça déjà. N'oublie pas : google est ton meilleur ami.

  6. A voir en vidéo sur Futura
  7. #5
    dimofzion

    Re : Nom de fichier en argument en C++

    OK merci a tous, je vais aller voir vos differentes propositions !

  8. #6
    dimofzion

    Re : Nom de fichier en argument en C++

    En fait j'ai du me rabbatre sur C pur, et lorsque je lui dit {system("cp %s nouveaudossier") ;} il me renvoie un message d'erreur comme quoi il faut utiliser un const char* mais je ne connais pas bien du tou ces choses la.

    De meme je ne sais pas bien manipuler les pointeurs alors si l'un de vous peut me donner un petit brin de synthaxe c'est cool !

    Et philder en shell tu fais comment ? Mon but final est de concatener un ensemble de fichiers dont les noms sont dans monfichiersource .J'avais tente un :
    cat .dat <mon fichiersource >mon fichier sortie
    mais ca ne marche pas correctememt (boucle a l'infini...) (sinon mon but etait de copier ces fichiers dans un dossier a part, ce aue je n'arrive pas a faire, pour les concatener ensuite.

  9. Publicité
  10. #7
    ced-29

    Re : Nom de fichier en argument en C++

    Salut,
    tu peux essayer avec un simple cast non?
    {system((const char*)("cp %s nouveaudossier")) ;}
    en renseignant le %s comme il faut
    et il faut peut-être rajouter un \n à la fin pour que ce soit pris en compte

  11. #8
    Sylvestre

    Re : Nom de fichier en argument en C++

    Citation Envoyé par dimofzion Voir le message
    Salut a tous,


    (for i=0;i<=N;i++){"system(cp 0" i ".dat ";}

    Comment faire ?
    Merci !
    Salut,

    Je te conseille d'utiliser plutôt les fonctions du C de gestion des fichiers : fopen, fclose, fwrite,...
    Le code devrait plutôt être du genre:

    Code:
    char name[20];
    FILE* source;
    FILE* dest;
    
    for (i=0;i<=n;i++)
    {
      sprintf(name,"%d.dat",i);
      source=fopen(name,"r"); // le fichier est ouvert en lecture
    
      sprintf(name,"./nouveauRepertoire/%d.dat",i);
      dest=fopen(name,"w") // le fichier est ouvert en écriture
      
      fread(source,...); /* je mets des ... car je ne suis plus sûr de la syntaxe et je n'ai pas trop le temps de checker maintenant, mais tu dois pouvoir trouver cela dans l'aide de fread*/
      fwrite(dest,...); //Mêm remarque, cf aide de fwrite
      fclose(source);
      fclose(dest);
    }
    J'espère t'avoir un peu aidé. Si ce n'est pas le cas, je vais essayer de te donner plus d'infos cet après-midi, mais pour l'instant, je ne peux pas.

  12. #9
    dimofzion

    Re : Nom de fichier en argument en C++

    Merci Sylvestre, finalement j'ai fait une procedure un peu equivalente, j'ai fait un
    fprintf(cp %s mondossier) dans une boucle et j'execute ensuite le fichier relie au print.

    Effectivememt, ta synthaxe a l'air interessante, je pense qu'elle marche.

    Merci
    @+

  13. #10
    dimofzion

    Re : Nom de fichier en argument en C++

    Citation Envoyé par ced-29 Voir le message
    Salut,
    tu peux essayer avec un simple cast non?
    {system((const char*)("cp %s nouveaudossier")) ;}
    en renseignant le %s comme il faut
    et il faut peut-être rajouter un \n à la fin pour que ce soit pris en compte
    C'est donc ca la synthaxe que je cherche depuis tant de...jours

    Merci !

Discussions similaires

  1. Nom de fichier en argument en C
    Par dimofzion dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 09/06/2008, 10h39
  2. Lire un fichier .BIN avec Matlab converti d'un fichier .WAV
    Par solissisme dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 03/05/2008, 16h13
  3. probleme d'ouverture d'in fichier ISO et d'un fichier RAR
    Par ABN84 dans le forum Logiciel - Software - Open Source
    Réponses: 12
    Dernier message: 28/08/2006, 18h54
  4. Argument
    Par khroms dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 02/11/2005, 07h58
  5. nom de fichier et nom de fichier.doc
    Par Cornemuse dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 18/02/2004, 16h49
Découvrez nos comparatifs produits sur l'informatique et les technologies.