C/Visual C - Visual C++

 
Vista:

Visual C++

Publicado por JC (2 intervenciones) el 17/03/2002 22:40:39
Alguien podria decirme porqué este código funciona en el "Builder" y no en "Visual C"...
Gracias de antemano.

/*Reverso de una cadena de caracteres*/
#include <stdio.h>
#include <string.h>

char* reverse(char* s);

main()
{
char* s = "Music";
printf("s=%s\n", s);
printf("reverse(s)=%s\n", reverse(s));
return (0);
}

char* reverse(char* s)
{
int length = strlen(s);
int middle = length/2;
int i;
char c;
length = length-1;
for (i=length; i>=middle; i--) {
c = s[i];
s[i] = s[length-i];
s[length-i] = c;
}
return s;
}
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:Visual C++

Publicado por Daniel Antonio (3 intervenciones) el 19/03/2002 16:03:14
Antonio
quisiera saber como hacer una calculadora ( por supuesto en lenguaje C++), orientada en objetos (o sea en modo grafico),

Agradezco tu ayuda y Gracias
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

calculadora lenguaje C

Publicado por MiGuEL AnGeL (2 intervenciones) el 23/06/2002 07:02:12
hola.... perdon que te moleste.. lo que pasa es que estoy pasando por el mismo problema que tu tuviste.. el de la calculadora... y no se si me podrias ayudar.... me pidieron la calculadora con las mismas caracteristicas que tu describiste...... si tienes algo por favor ayudame... es muy importante... gracias...
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:Visual C++

Publicado por Daniel Antonio (3 intervenciones) el 19/03/2002 16:03:27
Antonio
quisiera saber como hacer una calculadora ( por supuesto en lenguaje C++), orientada en objetos (o sea en modo grafico),

Agradezco tu ayuda y Gracias
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:Visual C++

Publicado por Diego G. Ruiz (41 intervenciones) el 19/03/2002 16:21:40
jaja muy bueno el ejemplo. Lo probé en Visual C++ 6.0 y en C++Builder 6.0 y tenés razón. Simplifiqué el ejemplo que diste al siguiente:

main()
{
char* s = "Music";
s[0] = 'a';
}

el anterior código funciona en C++Builder pero no en Visual C++. La razón, es que cuando definís y asignas "s" el Visual C++ lo toma como constante y protege el acceso al mismo.

En el ejemplo que diste vos, en Visual C++ tira una excepción en la línea

s[i] = s[length-i];

cuando querés modificar "s".

Lo podés arreglar muy fácilmente suplantando la línea

char* s = "Music";

por:

char * s = new char [6];
strcpy(s, "Music");

Ahora si me preguntás cual de los dos compiladores está actuando correctamente, me parece que en este caso es Visual C++, ya que las constantes deben ser protegidas. Hay otros ejemplos de casos contrarios como el siguiente:

for (int i=0; i<5; i++)
// Cualquier cosa

for (int i=0; i<5; i++)
// Cualquier cosa

En el ejemplo anterior Visual C++ tira un error de redefinición de variable y el C++Builder no. En este caso el que está equivocado es Visual C++ y C++Builder se ajusta mejor al ansi, ya que la variable "i" está dentro del scope del for, por lo que no es una redefinición.

Espero que te haya ayudado en algo. Cualquier cosa mandeme un mail a [email protected]

Saludos.

Diego G. Ruiz
deadLock++
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