Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/12/2007, à 17:08

elekaj34

Encodage nom de fichier

Bonjour,

Dans un programme en C, je construit un nom de fichier dans une variable de type "char *"

Ensuite je passe se nom de fichier à  une commande système comme suit :

char *command;
char *file;
....
sprintf(command,"touch \"%s\"",file);
system(command);

Tout marche bien, sauf pour les nom de fichiers contenant des accents, ceux ci apparaissent alors sous Ubuntu (mais d'autres Linux aussi) avec un ? sad sad

Comment faire pour encoder mes nom de fichiers en UTF8 (car je suppose que le problème vient de là ) ?

Cordialement,


Alain - Linux Ubuntu 18.04 LTS 64bits
Lumières d'Ici ... et d'Ailleurs

Hors ligne

#2 Le 12/12/2007, à 18:11

Link31

Re : Encodage nom de fichier

Je n'ai pas testé ce code avec des noms de fichiers, mais ça pourrait te donner quelques pistes :

#include <stdio.h>
#include <stddef.h>
#include <locale.h>

int main()
{
        setlocale(LC_CTYPE, "fr_FR.UTF-8");
        const wchar_t *file = L"texte avé dè acçents";
        printf("%ls\n", file);
        return 0;
}

Pense à  spécifier la localisation (sinon bizarrement printf() refuse de fonctionner), et pense à  utiliser le préfixe l dans les chaà®nes de format.

Dernière modification par Link31 (Le 12/12/2007, à 18:11)

Hors ligne

#3 Le 13/12/2007, à 09:03

elekaj34

Re : Encodage nom de fichier

Merci pour le bout de code

Si je test dans un fichier à  part, cela fonctionne au poil.

Dans mon programme, lors de l'affichage

Erreur de segmentation (core dumped)

Pourtant, j'ai pris un autre nom de variable, remplacé le char *file par const wchar_t *file mais rien n'y fais.

Cependant, je suis sur la bonne piste


Alain - Linux Ubuntu 18.04 LTS 64bits
Lumières d'Ici ... et d'Ailleurs

Hors ligne