Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Fácil while

Estas en el tema de Fácil while en el foro de C/C++ en Foros del Web. No entiendo como es que un while tan simple no da más de si :S while (i<10 || n!=2){ printf("texto : " ); scanf(" %[^\n]",var_struct[x].v_dato); ...
  #1 (permalink)  
Antiguo 02/05/2012, 12:21
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 13 años, 2 meses
Puntos: 3
Fácil while

No entiendo como es que un while tan simple no da más de si :S

while (i<10 || n!=2){
printf("texto : " ); scanf(" %[^\n]",var_struct[x].v_dato);
printf("textp2 "); scanf("%d",&n);
i++;
}

Vamos a repasar conceptos .... si se cumple n = 2 acaba el programa :S

No funciona como es ?: S ;S

Creo que es después de var_struct..... que deja el valor a NULL puede ser ? S:S:S::

Creo que después de esto me retiro :)
  #2 (permalink)  
Antiguo 02/05/2012, 13:13
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Fácil while

Funciona perfectamente el bucle.

La condición es: mientras (i sea menor que 10 ó n distinto de 2.

Fíjate que has puesto un OR y no un AND. Por eso, aunque n == 2, si i<10 seguirá el bucle.
  #3 (permalink)  
Antiguo 02/05/2012, 13:26
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Fácil while

¬¬' pensé que ponía un && :S sorry xD

Es que tampoco era este el concepto pero bueno :)


while (i<10 && n!="no"){
printf("texto" ); scanf(" %[^\n]",persona[x].telf[i]);
printf("mas texto : "); gets(n);
i++;
}

Tenia un && , pero lo que no me cojía era el gets()

Yo decia que no coje el gets(n); por que creo que después del scan deja un Null puede ser ?

Última edición por drakgoku1; 02/05/2012 a las 13:35
  #4 (permalink)  
Antiguo 02/05/2012, 13:44
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Fácil while

Después de un scanf conviene limpiar el buffer porque pueden quedarse caracteres como el '\n' (que es el carácter de fin de linea).

Aunque hayas puesto "%[^\n]", el \n te lo va a dejar en el buffer.

Usa fflush( stdin ) para limpiar el buffer después de usar scanf

Etiquetas: funcion, programa, struct
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:02.