Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/01/2012, 14:25
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: usar el enter en switch-case-defaul con utf8

Hola,

El problema no es de UTF, el caracter de nueva línea en cualquier tabla de caracteres conocida es el número [10] y el retorno de carro es el numero [13]. En Windows se utiliza la combinación [10, 13] para identificar un salto de línea y en Linux se utliza solamente el [10]. En UTF, ASCII y cualquier otra tabla el código de nueva línea es el [10].

El compilador de C utiliza los códigos de escape para facilitar la escritura de esos códigos, puesto que no tienen representación visual en la tabla ASCII (técnicamente no puedes ver un retorno de carro). Así que los 'escape codes' de C son \n para el código char 10 y \r para el código char 13.

Cuando escribes '\n' en el código fuente de un programa el compilador se encarga de convertirlo en el char con código [10] y escribirlo en el código objeto. Es decir al programa compilado no le llega un '\n' sino le llega el código binario que lo identifica con el char con código [10].

Y no es lo mismo poner:

Código C:
Ver original
  1. case '\n':
  2. case 10:

En el primer caso estas comparando un char en el segundo un int.

Saludos,