Encontré un código confuso durante la revisión del código y estoy un poco desconcertado. Investigando un poco encontré esta situación. Escribí esta muestra de código para destacar el problema¿Debería este char estar sin firmar?
char d = '©';// this is -87,the copyright symbol , (actually its 169 unsigned)
if(ispunct(d)) // will assert.
{
}
modo, el programador que era la corrección de errores, hizo lo siguiente:
char d = '©';// this is -87,the copyright symbol , (actually its 169 unsigned)
if(ispunct((unsigned char)d)) // will not assert, because it will be 169.
{
}
Mi pregunta es si está bien para hacer el char
sin firmar? Idealmente, no usaría char
, pero usaría un carácter Unicode para evitar este tipo de problema, pero el software es muy viejo y no se volverá a diseñar en el corto plazo.
Estoy usando Visual Studio 2008. ispunct()
se puede encontrar en ctype.h
.
Lo mismo se aplica al resto de las funciones de la misma familia, por ejemplo, 'isalpha()', 'toupper()', etc. – caf