[C con Clase] Saber cuando se ha presionado Enter...

Pedro R.G. sr.whiteskull en hotmail.com
Dom Abr 10 21:17:48 CEST 2011


......    char cadenaNumerica[10]={0,0,0,0,0,0,0,0,0,0}; //cuidado con la "basura", en la     unsigned char tecla=0; // medida de lo posible inicializamos las variables    unsigned int i=0; // con un valor, esto no es BASIC        printf("Introduce un número o pulsa ENTER para salir\n");    while (tecla!=13) // el código del ENTER es 13     {        tecla=getch();        if (tecla>47 && tecla<58) // Codigo ASCII del cero al nueve        {             //printf("HAz pulsado un numero.\n");            printf("%c",tecla);            cadenaNumerica[i++]=tecla; //concatenamos letra por letra        }    }        int numero=atoi(cadenaNumerica); // convertimos esa cadena de letras numericas en un entero    printf("\nMi numero = %d\n", numero);......
El problema de hacerlo así, ya que te comenté que hay muchas formas, es que si queremos rectificar un número introducido, deberás incluir una condición que recoja cuando es pulsada la tecla de BACKSPACE o borrar (creo que el código es el 127) y ahí realizar la operación de eliminación... suerte
Date: Sun, 10 Apr 2011 18:22:08 +0100
From: titinlou_2006 en yahoo.es
To: cconclase en listas.conclase.net
Subject: Re: [C con Clase] Saber cuando se ha presionado Enter...

Gracias por responder a ambos, pero lo he intentado de mil maneras:

scanf("%s", dat[i]);
        if(dat[i]=='\n')
            break;

scanf("%s", dat[i]);
        if(dat[i]=="\n")
            break;

scanf("%s", dat[i]);
        if(dat[i]==" ")
            break;

Usando strcmp también, y nada, no logro que al pulsar enter salga del bucle. ¿Alguna otra idea?

--- El dom, 10/4/11, Pedro R.G. <sr.whiteskull en hotmail.com> escribió:

De: Pedro R.G. <sr.whiteskull en hotmail.com>
Asunto: Re: [C con Clase] Saber cuando se ha presionado Enter...
Para: "Lista de correo sobre C y C++" <cconclase en listas.conclase.net>
Fecha: domingo, 10 de abril, 2011 16:53




Mmmm.. antes te iba a responder incorrectamente, menos mal que no llegó el mensaje. Bueno, el tema es que puedes hacerlo con getch(), usando la librería de Borland, http://c.conclase.net/devcpp/?cap=conio , peeero, creo que de una forma más complicada que nose si entenderás. Con getch() tomarías el valor de la tecla pulsada, por lo tanto solamente devuelve un caracter. Entonces a raíz de ese caracter debes comprobar si la tecla pulsada se trata de ENTER o no. Esto se podría hacer de muchísimas formas, desde tomar caracter a caracter por medio de un bucle y luego una vez pulsado ENTER validar la cadena y de ser válida convertirla a valor numérico, o hacerlo mucho más
 rebuscado y comprobar si la tecla pulsada es numérica por medio de getch y luego pasarlo a valor numérico y seguir tomando los demás números por medio de un scanf o similar. Si no quieres complicarte la vida, quizás la primera sugerencia te puede servir.
Función para convertir una cadena a un entero, atoi(),  http://c.conclase.net/curso/?cap=902d

Date: Sun, 10 Apr 2011 14:06:55 +0100
From: titinlou_2006 en yahoo.es
To: cconclase en listas.conclase.net
Subject: [C con Clase] Saber cuando se ha presionado Enter...

Hola, estoy empezando con esto de la programación en C y bueno, seguramente lo que pregunto sea una memez, pero vereis...Me piden un ejercicio en el que con un bucle se almacenen cadenas en una matriz bidimensional...hasta aquí todo claro, el problema es que el bucle debe
 finalizar si el usuario no introduce nada, si simplemente pulsa Enter sin introducir ningun caracter y luego mostrar los datos introducidos, no se si me explico con claridad. Bueno lo dicho, que será una tonteria pero...

Pongo lo que tengo hasta ahora.

#include <stdio.h>
main()
{
    char dat[100][80];
    int i=0;
    do
    {
        printf("Dato: ");
        scanf("%s",
 dat[i]);
        i++;
    }
    while(i<5);
    for(i;i>=0;i--)
        printf("\n%s\n", dat[i]);
}

Un saludo

_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ 		 	   		  

-----Adjunto en línea a continuación-----

_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110410/c806db13/attachment.html>


Más información sobre la lista de distribución Cconclase