Discussion:
En C sería asi (añadido soporte para la ñ :-p)
(demasiado antiguo para responder)
ViKT0RY
2003-08-19 22:54:58 UTC
Permalink
ulcase.c

/*--------------------------------------------------------------------------
-------------*/

#include <stdio.h>

void ucase(char *cadena) { /* pasa a mayusculas */
char *p=0;
p=cadena;
while(*p!=0) {
if((*p>=0x61) && (*p<=0x7A)) {
*p=(*p & 0xDF); /* Usando un and va a toda leche */
}
p++;
}
}

void lcase(char *cadena) { /* pasa a minusculas */
char *p=0;
p=cadena;
while(*p!=0) {
if((*p>=0x41) && (*p<=0x5A)) {
*p=(*p | 0x20); /* Usando un or va a toda leche */
}
p++;
}
}

int main(int argc, char *argv[]) {
int i=1; /* Nos saltamos el nombre del programa (./ucase) */
printf("Cadena original: ");
while(i<argc) {
printf("%s ", argv[i]);
i++;
}
i=1;
printf("\nCadena en mayusculas: ");
while(i<argc) {
ucase(argv[i]);
printf("%s ", argv[i]);
i++;
}
printf("\n");
return 0;
}

/*--------------------------------------------------------------------------
-------------*/

Un ejemplo de cómo funcionaría:

***@TSuNaMi:~/mis cosas/ulcase$ ./ucase "hola esto es una prueba. España
mola :)"
Cadena original: hola esto es una prueba. España mola :)
Cadena en mayusculas: HOLA ESTO ES UNA PRUEBA. ESPAñA MOLA :)
***@TSuNaMi:~/mis cosas/ulcase$

Ahí está :)
Patxi R.Y.
2003-08-20 00:53:06 UTC
Permalink
El dia Miércoles, 20 de Agosto de 2003 00:54 don/doña ViKT0RY quiso decir y
Post by ViKT0RY
ulcase.c
/*--------------------------------------------------------------------------
Post by ViKT0RY
-------------*/
#include <stdio.h>
void ucase(char *cadena) { /* pasa a mayusculas */
char *p=0;
p=cadena;
while(*p!=0) {
if(((*p>=0x61) && (*p<=0x7A))||((*p==codigoñ)||(*p==codigoÑ))) {
*p=(*p & 0xDF); /* Usando un and va a toda leche */
}
p++;
}
}
void lcase(char *cadena) { /* pasa a minusculas */
char *p=0;
p=cadena;
while(*p!=0) {
if(((*p>=0x41) && (*p<=0x5A))||((*p==codigoñ)||(*p==codigoÑ))) {
*p=(*p | 0x20); /* Usando un or va a toda leche */
}
p++;
}
}
Sustitúyese en su caso codigoñ por el codigo ñ en ¿octal? y lo mismo con
codigoÑ para la Ñ
--
Patxi R. Y.
www.patxi.tk
Patxi R.Y.
2003-08-20 00:58:23 UTC
Permalink
Post by ViKT0RY
ulcase.c
/*--------------------------------------------------------------------------
Post by ViKT0RY
-------------*/
#include <stdio.h>
void ucase(char *cadena) { /* pasa a mayusculas */
char *p=0;
p=cadena;
while(*p!=0) {
if(((*p>=0x61) && (*p<=0x7A))||(*p==codigoñ)) {
*p=(*p & 0xDF); /* Usando un and va a toda leche */
}
p++;
}
}
void lcase(char *cadena) { /* pasa a minusculas */
char *p=0;
p=cadena;
while(*p!=0) {
if(((*p>=0x41) && (*p<=0x5A))||(*p==codigoÑ)) {
*p=(*p | 0x20); /* Usando un or va a toda leche */
}
p++;
}
}
Sustitúyese en su caso codigoñ por el codigo ñ en ¿octal? y lo mismo con
codigoÑ para la Ñ
--
Patxi R. Y.
www.patxi.tk
Bartomeu
2003-08-20 05:52:15 UTC
Permalink
"Patxi R.Y." <***@terraTB_ESTO.es> escribi� en el mensaje news:bhuh8o$ncu$***@cernicalo.emeteo.local...
| > ulcase.c
| >
| >
|
/*--------------------------------------------------------------------------
| > -------------*/
| >
| > #include <stdio.h>
| >
| > void ucase(char *cadena) { /* pasa a mayusculas */
| > char *p=0;
| > p=cadena;
| > while(*p!=0) {
| > if(((*p>=0x61) && (*p<=0x7A))||(*p==codigoñ)) {
| > *p=(*p & 0xDF); /* Usando un and va a toda leche */
| > }
| > p++;
| > }
| > }
| > [...]

| Sustitúyese en su caso codigoñ por el codigo ñ en ¿octal? y lo mismo con
| codigoÑ para la Ñ


Perdona, pero en código ASCII, de codigoñ a codigoÑ no puedes pasar
haciendo and con 0xDF.

yo propongo lo siguiente, sin números mágicos (0x61, 0x7A ni 0xDF):

void a_mayusculas(char *Txt) // (a-z,ñ,ç) ==> (A-Z,Ñ,Ç)
{
for (;*Txt;Txt++)
{
if ((*Txt>='a')&&(*Txt<='z'))
*Txt -= ( 'a'-'A');
else if (*Txt=='ñ')
*Txt = 'Ñ';
else if (*Txt=='ç') // para el catalán y/o francés
*Txt = 'Ç';
}
}
Añadir las vocales acentuadas (áéíóúà... ==> ÁÉÍÓÚÀ...), y después la
funcion equivalente a_minusculas, lo dejo como ejercicio ;-)
Bartomeu
2003-08-20 12:12:20 UTC
Permalink
"ViKT0RY" <***@mirror.vikt0ry.com> escribi� en el mensaje news:bhvli9$kmn$***@nsnmrro2-gest.nuria.telefonica-data.net...
| Cuando usas 'a' estas diciendole al compilador que coja el ascii de esa
| letra, así que estas usando un número mágico :)

Si, pero el número mágico 'a' es mucho más claro que 0x61 para cualquiera
que lea el programa ;-)

| hay muchas más letras que portar aparte de la ñ y la ç, como la diéresis ü
y
| todas las variantes. Aun así, si se usan caracteres normales se puede usar
| el código que hice yo.

No confundas normal con frecuente. En castellano es tan normal el carácter
'a' como el 'ñ' y el 'ü'. En castellano no es normal el carácter 'ç' ni el
'à' pero si en catalán. En inglés todos estos son carácteres anormales ;-)

Si estás haciendo un programa en castellano tienes que tener en cuenta unos
carácteres. Si es en catalán otros. Si es en noruego no estoy seguro :-))

|
znôrt
2003-08-20 12:19:39 UTC
Permalink
Post by Bartomeu
| Cuando usas 'a' estas diciendole al compilador que coja el ascii de esa
| letra, así que estas usando un número mágico :)
Si, pero el número mágico 'a' es mucho más claro que 0x61 para cualquiera
que lea el programa ;-)
| hay muchas más letras que portar aparte de la ñ y la ç, como la diéresis ü
y
| todas las variantes. Aun así, si se usan caracteres normales se puede usar
| el código que hice yo.
No confundas normal con frecuente. En castellano es tan normal el carácter
'a' como el 'ñ' y el 'ü'. En castellano no es normal el carácter 'ç' ni el
'à' pero si en catalán. En inglés todos estos son carácteres anormales ;-)
Si estás haciendo un programa en castellano tienes que tener en cuenta unos
carácteres. Si es en catalán otros. Si es en noruego no estoy seguro :-))
No te entiendo. Por un lado dices que puede hacerse cualquier cosa con
la librería estándar, y luego, para una cosa para la que el estándar
si prevee una solución sencillísima (toupper()), prefieres utilizar
una dependencia del idioma o del S.O. no estándar y de comportamiento
indefinido ...

Uh? :-)

saludos
znôrt
Bartomeu
2003-08-20 14:20:37 UTC
Permalink
"zn�rt" <***@x.com> escribi� en el mensaje news:***@4ax.com...
| On Wed, 20 Aug 2003 14:12:20 +0200, "Bartomeu" <***@lander.es>
| wrote:
|
| >
| >"ViKT0RY" <***@mirror.vikt0ry.com> escribió en el mensaje
| >news:bhvli9$kmn$***@nsnmrro2-gest.nuria.telefonica-data.net...
| >| Cuando usas 'a' estas diciendole al compilador que coja el ascii de esa
| >| letra, así que estas usando un número mágico :)
| >
| >Si, pero el número mágico 'a' es mucho más claro que 0x61 para cualquiera
| >que lea el programa ;-)
| >
| >| hay muchas más letras que portar aparte de la ñ y la ç, como la
diéresis ü
| >y
| >| todas las variantes. Aun así, si se usan caracteres normales se puede
usar
| >| el código que hice yo.
| >
| >No confundas normal con frecuente. En castellano es tan normal el
carácter
| >'a' como el 'ñ' y el 'ü'. En castellano no es normal el carácter 'ç' ni
el
| >'à' pero si en catalán. En inglés todos estos son carácteres anormales
;-)
| >
| >Si estás haciendo un programa en castellano tienes que tener en cuenta
unos
| >carácteres. Si es en catalán otros. Si es en noruego no estoy seguro :-))
|
| No te entiendo. Por un lado dices que puede hacerse cualquier cosa con
| la librería estándar, y luego, para una cosa para la que el estándar
| si prevee una solución sencillísima (toupper()), prefieres utilizar
| una dependencia del idioma o del S.O. no estándar y de comportamiento
| indefinido ...

Porque yo hago programas en Cataluña y pueden tener entradas en catalán y/o
castellano y toupper no me funcionaba.
Por consiguiente, como en C se puede hacer cualquier cosa, lo que yo decido
hacer es ignorar toupper y hacer mi propia función de mayúsculas que si me
funciona. Es así de simple, no pretendo cambiar el estandar, adapto el
estandar a mi uso y lo utilizo como MI estandar.

|
| Uh? :-)
Eh! ;-)

| saludos
saludos
| znôrt
|

Loading...