Autor Tema: Problemas con un while en C

0 Usuarios y 1 Visitante están viendo este tema.

27 Mayo, 2021, 08:18 pm
Leído 2002 veces

URama

  • $$\Large \color{#5372a0}\pi\,\pi$$
  • Mensajes: 86
  • País: ec
  • Karma: +0/-0
  • Sexo: Masculino
Hola! Tengo un problema con un loop while que no se como solucionar. Os comento:
Quiero que por pantalla se escriba lo que sea mientras se guarda en una cadena (no necesito que se guarde indefinidamente, es decir, al siguiente bucle la memoria será para otra palabra), y quiero que para cuando lea por ejemplo FIN o EOF el bucle se pare, he intentado esto:
Código: [Seleccionar]
int main(void)
{
    char cadena[20];
   
    while (cadena != EOF)
    {
    gets(cadena);
    printf("No me sale");
    cadena++;
  }

}
Como puedo solucionar este problema? Muchas gracias!

27 Mayo, 2021, 09:58 pm
Respuesta #1

ingmarov

  • Moderador Global
  • Mensajes: 5,428
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Hola

Hola! Tengo un problema con un loop while que no se como solucionar. Os comento:
Quiero que por pantalla se escriba lo que sea mientras se guarda en una cadena (no necesito que se guarde indefinidamente, es decir, al siguiente bucle la memoria será para otra palabra), y quiero que para cuando lea por ejemplo FIN o EOF el bucle se pare, he intentado esto:
Código: [Seleccionar]
int main(void)
{
    char cadena[20];
   
    while (cadena != EOF)
    {
    gets(cadena);
    printf("No me sale");
    cadena++;
Código: [Seleccionar]
  }

}
Como puedo solucionar este problema? Muchas gracias!

Esa linea que he puesto en rojo ¿Para qué sirve? y si presionas enter sin introducir algún caracter ¿Qué sucede en esa linea en rojo? Sería interesante añadir luego de la linea en la linea printf(cadena);


Saludos
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

28 Mayo, 2021, 01:07 am
Respuesta #2

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,797
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Las cadenas no se comparan así.
Tendrías que usar alguna función que compare cadenas, como strcmp de string.h.

while (strcmp(cadena,"EOF") != 0) ...