Problema con caratteri accentati su console ed errori di sorta

di Anonimizzato19966 il
8 risposte
Stavo cercando di stampare un testo a video utilizzando printf nel quale comparivano dei caratteri accentati. Poichè non riuscivo a stampare questi ultimi dato che venivano sostituiti da altri caratteri, ho seguito la soluzione proposta da questa pagina di forum .
Ho scritto quindi questo programmino di prova per vedere se sto metodo funziona:

#include "stdafx.h"
#include <stdio.h>
#include <windows.h>


int main()
{
	int c;
	int i;
	char testo[] = "àèìòùé";
	CharToOemBuffA(testo, testo, sizeof(testo));
	for (i=0; i <= 6; i++)
		printf("%s", testo[i]);
    return 0;
Mi appare però una schermata di errore di questo tipo:
Eccezione generata in corrispondenza di 0x0F913F7D (ucrtbased.dll) in ConsoleApplication16.exe: 0xC0000005: violazione di accesso durante la lettura del percorso 0xFFFFFF85.

Se esiste un gestore per questa eccezione, il programma può continuare.

Come posso risolvere questo problema? Ci sono altri modi per risolvere il problema delle lettere accentate (ovviamente senza fare l'abominio di mettere l'apostrofo davanti)?
Specifico che sono piuttosto novellino, quindi parlate nel modo più chiaro e meno gergale possibile. Grazie in anticipo dell'aiuto.

8 Risposte

  • Intanto cambia nome alla variabile
  • Grazie per il consiglio ma dubito che questo possa risolvermi la situazione.
  • E invece si perché invoglierebbe la gente seria a darti la soluzione.... fidati, qui non abbiamo sei anni ...
  • Il nome é stato modificato.
    Ora come risolvo il problema?
  • Rileggi dal link la discussione nell'altro thread e vedrai che non c'è la for ma una semplice printf. Fai altrettanto
  • Si effettivamente andando con il semplice printf non mi crea nessun errore, ma a me interessa usare il for.
    Il punto è che se uso il for allo stesso modo con una stringa senza caratteri accentati (tanto per intenderci così)
    
    int main()
    {
    	char c;
    	char l_array[] = "testo";
    	int i;
    	for (i = 0; i<5; i++)
    	{
    		printf("%c", l_array[i]);
    	}
    	c = getchar();
    }
    
    non mi da nessun errore.
    Ora vorrei capire perchè fa casini se uso lo stesso identico metodo ma con la funzione CharToOem
  • Per un carattere usi %c per una stringa %s
  • Grazie mille
Devi accedere o registrarti per scrivere nel forum
8 risposte