Como identificar si se ha ingresado nombre o no en C++

Iniciado por SpockUrielo, 18 Junio 2012, 19:57 PM

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

SpockUrielo

Hola amigos, miren mi codigo es mas o menos asi:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
char nom[50];
main()
{
printf("Escribe tu nombre ");
gets(nom);
printf("Hola %s",nom);
getch();
}

PERO COMO LE HAGO PARA QUE ME MANDE UN MENSAJE QUE DIGA: No se ha introducido nombre.
CUANDO PRESIONE LA TECLA ENTER

COMO HAGO QUE DETECTE SI HAY O NO TEXTO??

Saludos! :D

satu

Hola

Antes que nada te convendría leerte esto

Puedes hacerlo así:

#include <stdio.h>
#include <stdlib.h>

int main() {
    char nom[50];
    printf("Escribe tu nombre: ");
    fgets(nom, 49, stdin);
    if((*nom != '\0') && (*nom != '\n')) {
        printf("Hola %s\n", nom);
    } else {
        printf("No has introducido nada\n");
    }
    getchar();
    return 0;
}


Saludos
Breakbeat como forma de vida

The Swash

CitarHola,

Debes inicializar la variable en 0 y luego comprobar que el primer byte sea NULL o no, sería una alternativa aunque hay varias formas.

if (nom[0] == '\0')
...


Otra puede ser utilizar strlen de <string.h> para saber la longitud de la cadena, obviamente inicializando la variable en 0 siempre.

Un saludo,
Iván Portilla.

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

satu, te me has adelantado (:

do-while

#3
¡Buenas!

Ya que utilizas una libreria no estandar, podrias haber investigado por lo menos algunas funciones de las trae...

- kbhit() te detecta si se ha pulsado alguna tecla.
- getch() extrae las pulsaciones de caracter.

Luego:


int posicion = 0, pulsacion = 0;
char letra;

do{
   do{
       if(kbhit())
       {
           letra = getch();
           if(letra != '\r')
           {
               cadena[posicion++] = letra;
               pulsacion = 1;
           }
       }
   }while(letra != '\r'); //al leer intro con getch, devuelve '\r', no '\n'
}while(!pulsacion);


Este metodo para leer cadenas es un coñazo, ya que tendras que realizar muchas comprobaciones (que no se haya pulsado una tecla de direccion, una de funcion FX, ctrl + algo, alt + algo, supr...) pero si lo implementas bien, puedes montarte un textbox de una linea relativamente interesante.

¡Saludos!

PD:

Y si utilizas las funciones getetxt, puttext,  (creo recordar que eran estas dos)  wherex, wherey, gotoxy, combinandolos con el reconociemiento de las direcciones y de distintas pulsaciones especiales de teclado, puedes hacerte un textbox multiline...

con cprintf, puedes remarcar errores o realzar el texto para determinadas palabras...

Si vas a usar conio, sacale jugo, no la utilices solo para el getch() del final de programa...
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!