Extraire le nom d'un fichier sans son extension

Résolu/Fermé
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 - 23 févr. 2022 à 12:54
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 - 25 févr. 2022 à 08:23
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
A voir également:

15 réponses

yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
23 févr. 2022 à 13:43
bonjour,
peut-être en prenant tout ce qui précède le dernier point?
0
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
23 févr. 2022 à 14:05
Et comment on fait ça en C?
0
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
23 févr. 2022 à 14:40
Par exemple, en utilisant les fonctions de string.h https://fr.wikipedia.org/wiki/String.h
0
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
23 févr. 2022 à 19:38
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
brucine Messages postés 14644 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 17 mai 2024 1 889
23 févr. 2022 à 21:53
Bonjour,

Pourquoi vouloir faire cela en C si apparemment, comme moi, tu n'y comprends rien?

En batch, c'est simple:
https://forums.commentcamarche.net/forum/affich-14163549-batch-lister-noms-de-ficheirs-sans-extensio
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
24 févr. 2022 à 05:04
Je sais ke faire en bash sauf que dans mon exo on me demande de le faire en C
0
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
24 févr. 2022 à 11:59
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
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
24 févr. 2022 à 14:17
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
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
24 févr. 2022 à 14:58
Qu'appelles-tu la "fin" de buffer?
Connais-tu les conventions en C pour représenter les chaines de caractères?
0
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
24 févr. 2022 à 15:01
La fin de buffer le caractère de fin de chaîné ´\0’
0
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
24 févr. 2022 à 15:45
memset met 80 \0 dans buffer.
0
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
24 févr. 2022 à 17:24
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
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
24 févr. 2022 à 17:41
peut-être tester si le dernier caractère est un ".", et, si oui, le remplacer par \0.

dans quel contexte fais-tu cela?
0
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
Modifié le 24 févr. 2022 à 18:38
Merci j'ai compris merci de votre aide


En fait je dois faire un programme je dois remplacer les .txt par .as
0
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
24 févr. 2022 à 19:06
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
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
Modifié le 24 févr. 2022 à 21:00
"ça marche pas": que se passe-t-il?

ton utilisation de memccpy me semble particulièrement hasardeuse.
0
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
24 févr. 2022 à 20:14
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
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
24 févr. 2022 à 21:00
et si il y a deux s dans le nom?
0
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
24 févr. 2022 à 21:03
as-tu lu la documentation de memccpy ?

n'as-tu pas vu récemment ce que certains faisaient avant memccpy ?
0
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1 > yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024
25 févr. 2022 à 06:05
Ah j'avais pas vu cette réponse,avant quoi vous vouliez dire
0
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
24 févr. 2022 à 21:04
Normalement ça doit rien changer vu que memccpy va s’arrêter au caractère qui vient avant le .
0
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
24 févr. 2022 à 21:04
Et mon code qu’est-ce que je fous changer pour qu’il fonctionne ?
0
Theo_0055 Messages postés 275 Date d'inscription mardi 21 juillet 2020 Statut Membre Dernière intervention 19 janvier 2023 1
25 févr. 2022 à 06:43
J'ai compris ce qui clochait merci
0
yg_be Messages postés 22791 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 mai 2024 1 467
25 févr. 2022 à 08:23
peux-tu alors marquer la discussion comme résolue?
1