Páginas: [1]
|
 |
|
Autor
|
Tema: Uno pregunta con el while (Leído 343 veces)
|
sempus
Desconectado
Mensajes: 1.432
GJDAM 愛している
|
tengo este codigo #include<stdio.h> #include<stdlib.h> #include<string.h> #define Seguir "si" main() { char seguir[1]; int salir = 0;
while (salir < 0 ); { printf("Desea Salir: \n"); scanf("%s",&seguir);
if (strcmp (seguir, Seguir) == 1) salir = 1;
} return 0;
}
y quiero que se ejecute siempre hasta que diga algo contrario a "si", pues en otros lenguajes es asi como lo he escrito aqui pero aqui no me funciona, que hago mal? que linea estoy omitiendo? gracias y un saludo
|
|
|
|
|
En línea
|
|
|
|
|
Ragnarok
|
http://c.conclase.net/librerias/funcion.php?fun=strcmpCon lo que tienes hecho sería así: if (strcmp (seguir, Seguir) == 0) salir = 1; Pero yo lo haría así: #include <stdio.h> #include <string.h> #define Seguir "si" int main(){ char seguir[256]; //algunos compiladores pueden quejarse de esto /*solucion: char seguir[256]; strcpy("no", seguir); */ while (strcmp (seguir, Seguir)){ printf("Desea Salir: \n"); scanf("%s", seguir); } return 0; } Espero que compile, porque ahora mismo no tengo ningún compilador instalado. (como puedes comprobar he corregido cosas adicionales)
|
|
|
|
|
En línea
|
|
|
|
sempus
Desconectado
Mensajes: 1.432
GJDAM 愛している
|
pues no, asi como lo tenia y asi como lo corregistes sigue sin funcionar,no se porque pero no funciona  Pero yo lo haría así: #include <stdio.h> #include <string.h> #define Seguir "si" int main(){ char seguir[256]; //algunos compiladores pueden quejarse de esto /*solucion: char seguir[256]; strcpy("no", seguir); */ while (strcmp (seguir, Seguir)){ printf("Desea Salir: \n"); scanf("%s", seguir); } return 0; } Espero que compile, porque ahora mismo no tengo ningún compilador instalado. (como puedes comprobar he corregido cosas adicionales) Asi si funciona  solo que alrevez  si le digo "si" se para y si le digo "no" continua pero no importa,la cosa es que funciona y eso es lo que queria,aunque me hubiera gustado hacer funcionar el codigo que yo tenia 
|
|
|
|
|
En línea
|
|
|
|
43H4FH44H45H4CH49H56H45H
Desconectado
Mensajes: 87
|
you're wrong into the compare of equals, Find the equals with 0 isn't necessary the stdlib into code, call system == empty #include<stdio.h> #include<string.h> #define Seguir "si" int main() { char seguir[1]; int salir = 0;
while (salir == 0 ) { printf("Desea Salir: \n"); scanf("%s",&seguir);
if (strcmp (seguir, Seguir) == 0) salir = 1; }
return 0; }
I have to go. Good-Bye
|
|
|
|
|
En línea
|
 -R IP :0100 -A 100 2826:0100 MOV AH,09 2826:0102 MOV DX,109 2826:0105 INT 21 2826:0105 MOV AH,08 2826:0105 INT 21 2826:0107 INT 20 2826:0109 DB 'MI NICK ES CODELIVE.$' 2826:0127 -R BX :0000 -R CX :20 -N CODELIVE.COM -W
|
|
|
sempus
Desconectado
Mensajes: 1.432
GJDAM 愛している
|
you're wrong into the compare of equals, Find the equals with 0 isn't necessary the stdlib into code, call system == empty #include<stdio.h> #include<string.h> #define Seguir "si" int main() { char seguir[1]; int salir = 0;
while (salir == 0 ) { printf("Desea Salir: \n"); scanf("%s",&seguir);
if (strcmp (seguir, Seguir) == 0) salir = 1; }
return 0; }
I have to go. Good-Bye hi acabo de probar este codigo pero no llega al printf("desea segui\n") esta linea se omite,aunque se digite "si" o "no" en programa continua y no impreme el printf("desea continuar\n"), lo de la igualdad dentro del while no lo habia pensado,pero si cambio el == por el < si se imprime el printf(), ya me estoy comenzando a confundir xDDD salu2
|
|
|
|
|
En línea
|
|
|
|
43H4FH44H45H4CH49H56H45H
Desconectado
Mensajes: 87
|
/* GCC Linux*/ #include<stdio.h> #include<string.h> #define Seguir "si"
int main() { char seguir[2]; int salir = 0;
while (salir == 0 ) { printf("Desea Salir: \n"); scanf("%s",&seguir); if (strcmp (Seguir,seguir) == 0) { printf("Salgo del Bucle\n"); break; }
} return 0; }
|
|
|
|
|
En línea
|
 -R IP :0100 -A 100 2826:0100 MOV AH,09 2826:0102 MOV DX,109 2826:0105 INT 21 2826:0105 MOV AH,08 2826:0105 INT 21 2826:0107 INT 20 2826:0109 DB 'MI NICK ES CODELIVE.$' 2826:0127 -R BX :0000 -R CX :20 -N CODELIVE.COM -W
|
|
|
|
ghastlyX
|
También lo puedes hacer así: #include <stdio.h> main() { int c; printf("Desea salir:\n"); while(c != EOF) { c = getchar(); if (c == 's') { if((c = getchar()) == 'i') break; } } } Así funciona, si te lo quieres currar más con este código puedes hacer que se asegure que "si" no es una sílaba. Un saludo de ghastlyX 
|
|
|
|
|
En línea
|
|
|
|
ҒrεακΠιи∂
Desconectado
Mensajes: 155
|
Buenas
1. No voy a decir nada sobre lo de preguntar si strcmp era igual a 1 porque seguramente ya leiste y te diste cuenta que cuando dos cadenas son iguales, devuelve 0 (a mi me ayudo pensar que strcmp devuelve la diferencia entre las cadenas)
2. La solucion de Ragnarok esta, a mi entender bastante bien. Yo lo que haria es poner un do-while en vez de un while, ya que deberias leer primero y comparar despues.
Salu2, FreakMind
|
|
|
|
|
En línea
|
Connoisseurs of C semantics find C++ inferior to ++C 
|
|
|
sempus
Desconectado
Mensajes: 1.432
GJDAM 愛している
|
|
|
|
|
« Última modificación: 18 Febrero 2008, 05:34 por sempus »
|
En línea
|
|
|
|
|
Páginas: [1]
|
|
|
|