IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Supprimer un fichier avec un paramètre %d


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant à l'école 42
    Inscrit en
    Avril 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant à l'école 42

    Informations forums :
    Inscription : Avril 2013
    Messages : 59
    Par défaut Supprimer un fichier avec un paramètre %d
    Bonjour,

    J'aimerai savoir si il était possible de supprimer un fichier avec un paramètre %d, comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("Le numéro est : %d", entier);
    Mais avec remove(); ou plutôt une autre fonction car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    remove("fichier%d.txt", entier);
    ne fonctionne pas...

    Cordialement,

  2. #2
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Non tu ne peux pas...
    La transformation du %d en un nombre se fait uniquement dans la famille des printf.

    Tu dois passer par snprintf pour créer ta chaîne, puis la passer à remove !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant à l'école 42
    Inscrit en
    Avril 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant à l'école 42

    Informations forums :
    Inscription : Avril 2013
    Messages : 59
    Par défaut
    Donc si j'ai bien compris sa fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    snprintf(fichier_r, 7, "fichier%d.txt", fplus);
    remove(fichier_r);
    Avec :
    fichier_r = fichier à supprimer
    fplus = Mon paramètre %d
    Et le paramètre de grandeur de la chaîne : 7 ou 8 si 0<%d<9 ou si %d>10

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char   *fichier_r;
    char   *length;
    int     fplus;
     
    sprintf(length, fplus);
    snprintf(fichier_r, 15, "fichier%d.txt", fplus);
    fichier_r[strlen("fichier.txt") + strlen(length)] = '\0'; //come ça tu es sur que la fin de ta chaine est après le .txt.
    remove(fichier_r);
    Sachant que j'ai mi 15 au malloc, c'est pour être sur que tu pourras rentrer 5000 dans fplus sans etre gêné.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant à l'école 42
    Inscrit en
    Avril 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant à l'école 42

    Informations forums :
    Inscription : Avril 2013
    Messages : 59
    Par défaut
    Citation Envoyé par Switi Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char *fichier_r;
    char *length;
    int fplus;
     
    sprintf(length, fplus);
    snprintf(fichier_r, 15, "fichier%d.txt", fplus);
    fichier_r[strlen("fichier.txt") + strlen(length)] = '\0'; //come ça tu es sur que la fin de ta chaine est après le .txt.
    remove(fichier_r);
    Sachant que j'ai mi 15 au malloc, c'est pour être sur que tu pourras rentrer 5000 dans fplus sans etre gêné.
    Je ne comprend pas à quoi sert ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sprintf(length, fplus);
    fichier_r[strlen("fichier.txt") + strlen(length)] = '\0'; //come ça tu es sur que la fin de ta chaine est après le .txt.
    Tu pourrai me les expliquer stp ?
    Car pour moi ces 2 lignes ne servent à rien :s

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(length, fplus);
    Là, si tu as 10 dans fplus, ta chaines length vaudra "10".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier_r[strlen("fichier.txt") + strlen(length)] = '\0'; //come ça tu es sur que la fin de ta chaine est après le .txt
    Là, tu dis qu'à la case strlen("fichier.txt") + strlen(length) c'est un '\0' (fin de chaine).

    strlen(fichier.txt) == 11.
    strlen(length) == 2

    DONC

    strlen(fichier10.txt) == 13.
    et nous, on a fait :

    car f est à la case 0, i à la 1, ...... le t sera à la 12e place.
    On dit donc que le 13e est un caractère de fin de chaine. (on a malloc de 15, donc si il n'y a pas de '\0', il y aura surement de la merde après jusqu'au 15e caractère.)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter un fichier avec 2 paramètres
    Par alban92000 dans le forum C++
    Réponses: 2
    Dernier message: 25/02/2008, 07h39
  2. supprimer un fichier avec unlink
    Par gtraxx dans le forum Langage
    Réponses: 2
    Dernier message: 11/02/2008, 20h11
  3. Réponses: 5
    Dernier message: 28/11/2007, 11h33
  4. Réponses: 3
    Dernier message: 05/09/2007, 09h52
  5. [ API JDIC ] Ouvrir un fichier avec des paramètres
    Par macmanus dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 11/05/2007, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo