C/Visual C - Ayuda con cadenas

 
Vista:

Ayuda con cadenas

Publicado por Jorge (2 intervenciones) el 01/10/2006 10:10:57
Estuve aprendiendo C/C++ con Borland, ahora por motivos de trabajo tengo que manejar Visual C++ 6.0, y de arranque encontre un problema en este codigo:

#include <stdio.h>
#include <string.h>
void main()
{
char *mensaje;
char *cadena;
mensaje = "Esta es una cadena de prueba";
cadena = strupr(mensaje);
printf(cadena);
}

Con este codigo me sale un error cuando realiza la funcion "strupr()". En la ayuda indica q la funcion es "_strupr()" pero tambien me sale error.
¿Alguien sabe a que puede deberse este error?.
Gracias de antemano por su ayuda.

Jorge
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con cadenas

Publicado por Eduardo Negrete (76 intervenciones) el 01/10/2006 17:16:44
Pues mira yo tuve el mismo problema que tu y para evitarme problemas mejor cree mi propia funcion.

Te la dejo por si no encuentras otra opcion y si encuentras como se usa la funcion de visual pues nos dices no.

#include <stdio.h>
#include <conio.h>
#include <string.h>

char *Strupr( char String[] );

void main()
{
char mensaje[] = "Esta es una cadena de prueba";
char *cadena;

// Con La Funcion De Visual
cadena = strupr( mensaje );
puts(cadena);
// Creando La Funcion
cadena = Strupr(mensaje);
puts(cadena);
getche();

delete[] cadena;
}

char *Strupr( char String[] )
{

int length;
char *cp;

cp = new char[strlen( String ) + 1];

length = strlen( String ) + 1;
for (int i = 0; i < length; i++)
{
cp[i] = String[i];
if ('a' <= cp[i] && cp[i] <= 'z')
cp[i] += 'A' - 'a';
}


return cp;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con cadenas

Publicado por Julio Aguilar (2 intervenciones) el 02/10/2006 21:21:45
Yo no soy un experto en C, pero el ejemplo base me corre.

Lo que pasa es que como vienes de borlan usas las variables char * como si fueran cadenas de caracteres cualquiera.

las variables char son punteros a cadenas. por eso la asignacion no se hace directamente.

#include <tstdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
char mensaje[150];
char *cadena=NULL;


sprintf (mensaje,"%s", "Esta es una cadena de prueba");
cadena = strupr(mensaje);

printf("%s",cadena);

return 0;
}
de esta forma no deberia darte problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con cadenas

Publicado por fernando.gomez (1603 intervenciones) el 02/10/2006 22:34:38
Hola. Pues resulta que strupr no es una función estándar de C. Por eso cada quién hace lo que quiere con funciones no estándares, como colocarlas en diferentes "headers", tener diferente firma, o simplemente no existir. Visual C++ prefija todas sus funciones no estándares con un guión bajo.

En ctype.h se definen toupper y tolower, que son las funciones estándares para convertir cadenas. Te sugiero que emplees estas para no tener problemas de portabilidad.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con cadenas

Publicado por Jorge (2 intervenciones) el 02/10/2006 22:52:16
Eso me lleva a la siguiente pregunta: ¿Como se cuales funciones son standares y cuales no?.
Por cierto tambien probe con la funcion "_strupr()" y me botaba el mismo error.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con cadenas

Publicado por fernando.gomez (1603 intervenciones) el 02/10/2006 23:37:50
Pues... lo más fácil es que te consigas la especificación ISO C99 e ISO C++99. Ese es el estándar. Otra es que los libros que consigas sean de autores cercanos a la creación del estándar, como Stroustrup, Ritchie, Kerninham, Alexandrescu, etc. Otra, es a base de experiencia.

En particular, te recomiendo que te metas al foro "Programmers Town" de Yahoo Groups, porque ahí hay muchos buenos programadores que conocen el estándar, y siempre te recalcan ese hecho. De ahí puedes aprender mucho.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar