[C] Lettere accentate nell'istruzione printf()

di il
13 risposte

[C] Lettere accentate nell'istruzione printf()

Ciao a tutti,

sono nuovo nel Forum
mi chiamo Robertino,

ho ripreso a studiare il C dopo alcuni anni,

spero di oltre che chiedere anche di rispondere alla domande e di
aiutare nel forum.

Non riesco a capire come inserire le lettere accentate (es. è à ò) dentro un'istruzione
printf(); se le scrivo nel codice poi quando eseguo il programma mi visualizza un'altro
carattere, come compilatore utilizzo Pelles C.

Ciao a tutti e grazie per la risposta.
Robertino.

13 Risposte

  • Re: [C] Lettere accentate nell'istruzione printf()

    Non si puo.. metti ' per le lettere accentate..
  • Re: [C] Lettere accentate nell'istruzione printf()

    Se usi una versione inferiore alla 5.00.1 non viene supportato il locale nel modulo runtime.
    L'upgrade infatti aggiunge il supporto per UTF-8 e UTF-16 e il settaggio del locale.

    Il fatto di non usare le accentate è una cavolata... se dovessi scrivere una printf in giapponese o indiano?!? Il locale serve alla stesura di programmi multilingua!!!
  • Re: [C] Lettere accentate nell'istruzione printf()

    Uso la versione 6.00.4 di Pelles C, quindi dovrebbe funzionare?
  • Re: [C] Lettere accentate nell'istruzione printf()

    Sembrerebbe di si, ma io non conosco l'ambiente e l'informazione te l'ho passata per quello che ho letto dalle loro news di upgrade.

    Le tue variabili di ambiente LC sono settate correttamente?
    Quale codifica di caratteri utilizzi nella shell?

    Cerca nel loro Forum 'locale'
  • Re: [C] Lettere accentate nell'istruzione printf()

    Ciao, molto probabilmente non riesci a vedere la lettera accentata perché il compilatore crea l'eseguibile codificando in latin1 e il tuo terminale di output codifica in unicode (o viceversa). In questo caso dovresti provare la libreria wchar del c per gestire caratteri in latin1. Prova a fare una printf("%S\n", "è"); e dovresti visualizzare correttamente la lettera.

    Intel
  • Re: [C] Lettere accentate nell'istruzione printf()

    Se il compilatore non le supporta non le puoi scrivere. che io sappia e secondo la mia piccola esperienza il C non supporta parole accentate, infatti per scrivere "è" dovresti scrivere "e' ", a diff del c++ che è stato implementato in maniera "migliore"
  • Re: [C] Lettere accentate nell'istruzione printf()

    @cianuro,

    Partendo dal presupposto che la codifica unicode UTF-8 e UTF-16 viene gestita dal compilatore dalla versione 5.00.1
    - come dichiarato nelle loro news di upgrade- il problema è quindi di incompatibilità tra la codifica di output dell'eseguibile e la codifica di visualizzazione del terminale -come aveva evidenziato @Intel-. Tutto qui! Le lettere accentate si usano e sono gestibilissime!!!
    Io ho progetti multilingua -scritti in C- in giro per il mondo tradotti in Francese, Italiano, Inglese e Spagnolo
    con le lettere accentate e vengono compilati in ambienti differenti con compilatori differenti.

    Evitiamo quindi di parlare senza conoscere il problema... per favore!!!

    Quello che posso suggerire è impostare il locale e controllare la codifica di visualizzazione della shell o terminale
    
    #include <stdio.h>
    #include <locale.h>
    
    int main (void)
    {
        printf ("locale is %s\n",setlocale (LC_ALL,NULL));
        printf ("àèìòù\n");
        setlocale (LC_ALL,"");
        printf ("now locale is %s\n",setlocale (LC_ALL,NULL));
        printf ("àèìòù\n");
    }
    
    ~Max~
  • Re: [C] Lettere accentate nell'istruzione printf()

    Direi che ora hai tutte le possibili soluzioni :

    --> puoi settare il locale;
    --> puoi utilizzare la libreria wchar per gestire l'UCS-4

    oppure, se aspetti qualche mesetto puoi scaricare dal mio sito () la mia libreria IsString che risolve tutti i problemi legati alla gestione delle stringhe a basso livello
    Scusate per la pubblicita` ihihih
  • Re: [C] Lettere accentate nell'istruzione printf()

    La soluzione proposta da "ixamit" funziona perfettamente!

    Grazie per l'aiuto a tutti, ancora ho molto da imparare!
    Robi
  • Re: [C] Lettere accentate nell'istruzione printf()

    Figurati, per chi non sa come funzionano le cose, gli accenti sono sempre un problema
    Alla prossima!!

  • Re: [C] Lettere accentate nell'istruzione printf()

    Per colpa di un accento
    un tale di Santhià
    credeva d'essere alla meta
    ed era appena a metà.
    ...
    di Gianni Rodari posted by ixamit
  • Re: [C] Lettere accentate nell'istruzione printf()

    In C basta stampare il carattere utilizzando il relativo codice ASCII tramite %c vi faccio vedere un esempio per stampare la è
    Dichiaro una costante per comodità:
    #define CSPECIALE 138

    printf("Questa %c una prova!!!\n", CSPECIALE);

    spero di essere stata d'aiuto
  • Re: [C] Lettere accentate nell'istruzione printf()

    Guarda che il thread è di 9 anni fa... nove anni...

    Fai attenzione quando rispondi
Devi accedere o registrarti per scrivere nel forum
13 risposte