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 :

Extraire des 4 dernier caractères d'une chaine


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut Extraire des 4 dernier caractères d'une chaine
    Bonjour,

    Ma demande est dans le titre,

    J'ai une chaîne de caractère avec le nom du type de fichier et je voudrais pouvoir l'extraire, un exemple vaut mieux qu'un long discourt:

    [image_spectro.tif] => [image_spectro]

    Merci, d'avance

    niko

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Niko_de_bordo Voir le message
    J'ai une chaîne de caractère avec le nom du type de fichier et je voudrais pouvoir l'extraire, un exemple vaut mieux qu'un long discourt:

    [image_spectro.tif] => [image_spectro]
    C'est pas 'extraire', mais supprimer.

    Si ce sont "les 4 derniers", il suffit de placer un 0 juste après le dernier caractère que tu gardes. (strlen() etc.)

    Si c'est "supprimer l'extension si elle existe", tu utilises strrchr() avec '.' et tu places un 0 à l'endroit trouvé si il existe.

    Dans tous les cas, la chaine doit être modifiable.

    C'est simple. Fait de ton mieux et poste ton code.

  3. #3
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    tiens, j'espère que c'est ce que tu voulais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
     
    int main(void)
    {
        /* Nom du fichier à couper */ 
        char Stream[]="FileName.xxx";
     
        /* Taille de la chaine contenant le fichier (taille => 13)*/
        int StreamSize=sizeof(Stream)/sizeof(char);
     
        /* Taille du nom du fichier : .xxx => 4 caractères à supprimer (taille => 9)*/
        int FileNameSize=StreamSize-4;
     
        /* On définit la variable receptrice du nom du fichier */
        char *FileName;
     
        /* On alloue 9 cases mémoires nécéssaires */
     
        FileName=malloc((FileNameSize)*sizeof(char));
     
        /* On remplit que de ce dont on a besoin */
        /* On commence à 0, donc comme on veut remplir 8 caractères il faut aller de 0~7 soit (FileName-1) strictement */
     
        int i=0;
        for ( i=0 ; i<(FileNameSize-1) ; i++ )
            {
                  FileName[i] = Stream[i];
            }
     
        /* On termine la chaine par \0 à la 9eme cases ( incrément n°8 ) => (FileNameSize-1) )*/
        FileName[FileNameSize-1]='\0';  
     
        /* On affiche comme ça*/    
        int j=0;
        for ( j=0 ; j<(FileNameSize-1) ; j++ )
            {
                  printf("%c", FileName[j] );
            }
     
        /* Ou comme ça*/
        printf("\n%s", FileName);
     
        /* Taille des fichier */
        printf("\n%d, %d", FileNameSize, StreamSize); 
     
        getch();
    }

  4. #4
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par darkwall_37 Voir le message
    tiens, j'espère que c'est ce que tu voulais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
     
    int main(void)
    {
        /* Nom du fichier à couper */ 
        char Stream[]="FileName.xxx";
     
        /* Taille de la chaine contenant le fichier (taille => 13)*/
        int StreamSize=sizeof(Stream)/sizeof(char);
     
        /* Taille du nom du fichier : .xxx => 4 caractères à supprimer (taille => 9)*/
        int FileNameSize=StreamSize-4;
     
        /* On définit la variable receptrice du nom du fichier */
        char *FileName;
     
        /* On alloue 9 cases mémoires nécéssaires */
     
        FileName=malloc((FileNameSize)*sizeof(char));
     
        /* On remplit que de ce dont on a besoin */
        /* On commence à 0, donc comme on veut remplir 8 caractères il faut aller de 0~7 soit (FileName-1) strictement */
     
        int i=0;
        for ( i=0 ; i<(FileNameSize-1) ; i++ )
            {
                  FileName[i] = Stream[i];
            }
     
        /* On termine la chaine par \0 à la 9eme cases ( incrément n°8 ) => (FileNameSize-1) )*/
        FileName[FileNameSize-1]='\0';  
     
        /* On affiche comme ça*/    
        int j=0;
        for ( j=0 ; j<(FileNameSize-1) ; j++ )
            {
                  printf("%c", FileName[j] );
            }
     
        /* Ou comme ça*/
        printf("\n%s", FileName);
     
        /* Taille des fichier */
        printf("\n%d, %d", FileNameSize, StreamSize); 
     
        getch();
    }
    plutôt que de te compliquer la vie, suis les conseils des anciens...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main(void)
    {
       char pathname[]  = "FileName.xxx";
       char * extension = strrchr(pathname, '.');
     
       if(extension != NULL)
       {
          *extension = '\0';
       }
     
       puts(pathname);
       return 0;
    }

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par darkwall_37 Voir le message
    tiens, j'espère que c'est ce que tu voulais
    Et si le fichier s'appelle "FileName.xx" ?

  6. #6
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    En effet, mais comme sous windows les extentions sont codées sur 3digits, je ne me suis pas posé la question.

    Votre version est plus puissante je vous l'accorde, on dira que moi ça permet de revoir les classiques lol.

  7. #7
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par darkwall_37 Voir le message
    En effet, mais comme sous windows les extentions sont codées sur 3digits, je ne me suis pas posé la question.
    vraiment?
    .divx
    .docx
    .xaml

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 05/12/2008, 10h31
  2. Réponses: 2
    Dernier message: 25/04/2008, 12h48
  3. Suppression des 30 premiers caractères d'une chaine
    Par linooo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/06/2007, 16h09
  4. Réponses: 6
    Dernier message: 06/09/2006, 21h28
  5. [Tableaux] Suppresion du dernier caractère d'une chaine
    Par GarGamel55 dans le forum Langage
    Réponses: 15
    Dernier message: 19/02/2006, 22h27

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