C/Visual C - Por que no se sale??

 
Vista:

Por que no se sale??

Publicado por jp (27 intervenciones) el 31/10/2002 05:48:55
Necesito de su ayuda,,, a ver si me podrían decir por qué cuando se ejecuta esta función, no se sale del ciclo!!!

int main(){
char h[80];
do{
gets(h);
puts(h);
}while ( h ! = "" );
}

Gracias por toda la ayuda me den!
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:Por que no se sale??

Publicado por Ismael (230 intervenciones) el 31/10/2002 09:56:00
Mira a ver así:

#include <stdio.h>
#include <conio.h>
int main()
{
char h[80];
int i=0;
gets(h);
do
{
printf("%c",h[i++]); //imprimimos caracter a caracter
}while ( h[i] != '\0' ); //hasta que encontramos caracter de fnal de cadena
getch();
}
Saludos
Ismael
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:Por que no se sale??

Publicado por felipe (9 intervenciones) el 31/10/2002 15:19:33
Hola, creo que la condición de tu ciclo es incorrecta, ya que h es un string y "" también lo es, así que para comparar 2 strings deberías usar la función strcmp(string1,string2). Así tu programa quedaría:

#include <string.h>

int main(){
char h[80];
do{
gets(h);
puts(h);
}while ( strcmp(h,"") != 0 );
}

Prueba ingresando un enter y deberías salir del ciclo.

Suerte
Felipe
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:Por que no se sale??

Publicado por Alvaro (122 intervenciones) el 31/10/2002 16:15:01
El hecho es que si comparas h == "" estás comparanco la dirección de memoria apuntada por la variable h ( h es un char * => puntero) con la direccion de memoria en la que el programa guarda el string constante "" en la funció, estas de hecho son diferentes.
tienes otra forma de verificar si el string h esta vacio, que es h[0] == 0.
con esto preguntas "¿el primer caracter en el string apuntado por la variable h es 0?"
Con esto ahorras tiempo de procesador porque no llamas a la función strcmp().
si no te acomoda comparando con 0 puedes comparar con '\0' que es lo mismo pero en representacion de caracter.
SUERTE.
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:Por que no se sale??

Publicado por jp (27 intervenciones) el 31/10/2002 16:28:19
Sí.... muchas gracias a todos! ... =)
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