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 -
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
exemple
nom: operation.txt
nom sans l'extension:operation
15 réponses
-
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? -
Et comment on fait ça en C?
-
Par exemple, en utilisant les fonctions de string.h https://fr.wikipedia.org/wiki/String.h
-
-
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? -
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Je sais ke faire en bash sauf que dans mon exo on me demande de le faire en C
-
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 -
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(…) -
La fin de buffer le caractère de fin de chaîné ´\0’
-
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 .? -
Merci j'ai compris merci de votre aide
En fait je dois faire un programme je dois remplacer les .txt par .as -
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 -
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] -
Normalement ça doit rien changer vu que memccpy va s’arrêter au caractère qui vient avant le .
-
Et mon code qu’est-ce que je fous changer pour qu’il fonctionne ?
-
J'ai compris ce qui clochait merci