Discussion:
problema con cadena de caracteres
(demasiado antiguo para responder)
ruboslav
2004-05-17 13:32:57 UTC
Permalink
Hola tengo un problema y no se donde está el fallo. Espero que me
podais ayudar. Veamos tengo declarada una cadena de caracteres tal
que así:

char Base[] = {'!','"','·','|','@','#','$','%','&','/','(',')','='
,'?','¿',''','¡','*','+','^','`','[',']','_','-',',',';',':','.'
,'>','<'};

O sea como podeis ver son todos caracteres ascii "no usuales", entend
diendo por usuales números y letras. El caso es que al compilar me da
una ristra de fallos todos por culpa de esa declaración. El error
principal es el siguiente:

combos.c:24:32: aviso: constante de carácter con múltiples caracteres
combos.c: En la función `main':
combos.c:24: aviso: desbordamiento en la conversión implícita de constante
combos.c:24:81: aviso: constante de carácter con múltiples caracteres
combos.c:24: aviso: desbordamiento en la conversión implícita de constante
combos.c:24:86: constante de carácter vacía
combos.c:24: error de decodificación antes de ','

O sea que el fallo debe ser debido a que declaro la comilla simple ' y
claro el compilador lo interpreta como que abro comillas simples, las
cierro y despues abro otras (''') ¿cómo puedo representar la comilla
simple en el array sin que me de error?

Si quito esas comillas ya no me da fallos pero si Warnings o avisos como
este:

desbordamiento en la conversión implícita de constante

¿Qué quiere decir? ¿Qué hago mal en el array? ¿Y si quiero declarar \
en ese array como lo hago? ¿Así \\?

Gracias y saludos.
Fco. Javier Espejo
2004-05-17 16:45:53 UTC
Permalink
Post by ruboslav
,'?','¿',''','¡','*','+','^','`','[',']','_','-',',',';',':','.'
,'>','<'};
¿Qué quiere decir? ¿Qué hago mal en el array? ¿Y si quiero declarar \
en ese array como lo hago? ¿Así \\?
Si exacto '\\' así, y las comillas '\"' y la comilla simple '\''

--------------------------------
¿Sistemas Operativos? ¡Visitala!
http://www.arrakis.es/~jespejo
***@ESTOarrakis.es
--------------------------------
znôrt
2004-05-17 17:53:23 UTC
Permalink
On Mon, 17 May 2004 15:32:57 +0200, ruboslav
Post by ruboslav
desbordamiento en la conversión implícita de constante
Supongo que porque el valor ascii de algunos de esos caracteres se
sale del rango de "char" por defecto de tu compilador (signed,
unisgned), o puede que estés compilando para unicode.
Post by ruboslav
¿Qué quiere decir? ¿Qué hago mal en el array? ¿Y si quiero declarar \
en ese array como lo hago? ¿Así \\?
Exacto, lo mismo que las comillas, \ "escapa" cualquier caracter, es
decir, toma el siguiente caracter literalemente, ignorando cualquier
significado especial que pueda tener.

Quizá en vez de todo eso, te convenga mirar las funciones (o macros?)
de identificación de caracteres que tengas definidos en el ctype.h de
tu plataforma. Tendrás al menos isdigit() y isalpha(), que para tu
caso creo que te valdrían. Simplificarás el código, y ya no dependerás
de esos caracteres en concreto, y eso es importante porque depende de
la plataforma.

saludos
znôrt

Loading...