Extraire le nom d'un fichier sans son extension

Résolu
Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, escequ'il y a une fonction qui extrait le nom d'un fichier en language c s'il vous plait?
exemple

nom: operation.txt

nom sans l'extension:operation

15 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    peut-être en prenant tout ce qui précède le dernier point?
    0
  2. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    Et comment on fait ça en C?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Par exemple, en utilisant les fonctions de string.h https://fr.wikipedia.org/wiki/String.h
      0
  3. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    Je sais pas c’est quel fonction il faut choisir ,il y en a vraiment beaucoup et il y a beaucoup je je connais pas
    Vous pouvez me dire c’est laquelle svp?
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    Je sais ke faire en bash sauf que dans mon exo on me demande de le faire en C
    0
  6. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    Si quelqu’un sait comment faire je suis prenant
    Par exemple memccpy peut faire à peu près ce que veux sauf que il va inclure le . or moi je veux pas de point
    0
  7. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    En fait en regardant ce code la :

    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    char* msg = "This is the string: not copied";
    
    int main( void )
    {
        char buffer[80];
    
        memset( buffer, '\0', 80 );
        memccpy( buffer, msg, ':', 80 );
    
        printf( "%s\n", buffer );
        
        return EXIT_SUCCESS;
    }
    
    


    Ça renvoie this is the string:

    Je sais pas dans ce code c’est comme si on mettait à la fin de buffer un ‘\0’ sinon je voispqsl’utilite de faire memset(…)
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Qu'appelles-tu la "fin" de buffer?
      Connais-tu les conventions en C pour représenter les chaines de caractères?
      0
  8. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    La fin de buffer le caractère de fin de chaîné ´\0’
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      memset met 80 \0 dans buffer.
      0
  9. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    Ah ok je vois je comprend mieux

    Donc du coup
    Par exemple si j’ai
    char fichier [10]= " operations.txt "
    fichier sans extension=operations
    Char fichier_sans_extension[10];

    Pour ce faire je fait memccpy(fichier_sans_extension,fichier, '.' ,10)
    puts(fichier_sans_extension)
    Normalent ça me donne operations.

    Comment faire pour ne pas tenir compte du .?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peut-être tester si le dernier caractère est un ".", et, si oui, le remplacer par \0.

      dans quel contexte fais-tu cela?
      0
  10. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    Merci j'ai compris merci de votre aide

    En fait je dois faire un programme je dois remplacer les .txt par .as
    0
  11. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    En fait j'ai écris ce code là mais ça marche pas je comprends pas
    #include <stdio.h>
    #include <string.h>
    int main(){
      char fichier[]="operations.txt";
      char dest[50];
      char fichier_sans_extension[50];
    
      int i=0;
      while(fichier[i]!='\0'){
        if(fichier[i]=='.'){
          memccpy(fichier_sans_extension,fichier,fichier[i-1],strlen(fichier));
          puts(fichier_sans_extension);
          }
          i++;
          
      }
    
      }
    


    Vous savez ce qui cloche dans mon code?

    j
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      "ça marche pas": que se passe-t-il?

      ton utilisation de memccpy me semble particulièrement hasardeuse.
      0
  12. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    En fait tantot ça m'affiche
    operations��U
    operations6�wU
    operationsX�
    .....

    C'est bizarre que ça m'affiche des trucs comme ça

    En fait je voulais que memccpy me renvoie operations

    o p ....s .
    0 1 9 10

    memccpy si je l'utilse comme précédemment ca renvoie operations/

    Moi je voulais trouvé avec mon programme l'indice où se trouve le point à savoir i=9

    et en faisant fichier[i-1] ca me permet de m'arreter à s

    Et en faisant comme tout à l'heure sauf que je remplace '.' par fichier[i-1]
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      et si il y a deux s dans le nom?
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      as-tu lu la documentation de memccpy ?

      n'as-tu pas vu récemment ce que certains faisaient avant memccpy ?
      0
      1. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Ah j'avais pas vu cette réponse,avant quoi vous vouliez dire
        0
  13. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    Normalement ça doit rien changer vu que memccpy va s’arrêter au caractère qui vient avant le .
    0
  14. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    Et mon code qu’est-ce que je fous changer pour qu’il fonctionne ?
    0
  15. Theo_0055 Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   1
     
    J'ai compris ce qui clochait merci
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu alors marquer la discussion comme résolue?
      1