Pregunta sobre leer nombre por pantalla en C

Iniciado por ZedGe, 26 Diciembre 2011, 04:55 AM

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

ZedGe

Tengo una estructura tipo agenda, y necesito que al preguntar por un nombre se pueda ingresar Juanito Perez y al imprimirlo nuevamente salga Juanito Perez


tengo la declaracion

char Nombre[15]

Lo pregunto y lo guardo como

scanf("%s",&nuevo->Nombres);fflush(stdin);


y al imprimir solo me sale Juanito trabajo con listas enlazadas por eso el -> y la estructura



Ferno

¿Podrías postear la declaración de toda la estructura y la parte del código donde lees el nombre?
A simple vista, declarase el campo nombre, y estás guardando en un campo nombres, los cuales son diferentes (por la "s" del final, pero supongo que es sólo un error de tipeo.
Otra cosa, fflush es una función para archivos de salida, no es recomendable usar fflush(stdin).

BlackZeroX

#2
independientemente de como tengas la lista...



    char szReaderBuffer[255];
   
    memset(szReaderBuffer, 0, 255);         //  No es necesario pero yo siempre lo hago...
    fgets(szReaderBuffer, 255, stdin);      //  Escaneamos la entrada de datos NO IMPORTA SI HAY ESPACIOS... solo importa la longitud!¡.
    fprintf(stdout, "%s\n", szReaderBuffer);//  Imprimimos.
//    fflush(stdout);                         //  Forzamos la salida de datos... Solo si hay errores...
   
    return EXIT_SUCCESS;



Si no te sirve el codigo anterior entonces hay algo mal declarado en tu codigo...

Nota: http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Dulces Lunas!¡.
The Dark Shadow is my passion.

Caster


ZedGe

Cita de: |Demon| en 26 Diciembre 2011, 08:02 AM
Utiliza fgets();
Saludos

el fgets usa un fichero char *fgets(char *cadena, int n, FILE *stream);

con el codigo de demon no puedo guardar la variable en mi lista enlazada aqui mi estructura del codigo


#ifndef ESTRUCTURAS_H_INCLUDED
#define ESTRUCTURAS_H_INCLUDED

typedef struct datosClientes{
   char RUT[15];
   char Nombres[15];
   char Apellidos[15];
} Datos;

typedef struct Nodo {
   Datos Persona;
   struct Nodo *sgte;
} Nodo;

typedef struct Lista {
   Nodo *inicial;
} Lista;

typedef int posicion;

#endif // ESTRUCTURAS_H_INCLUDED

Eternal Idol

ZedGe: tambien podes usar stdin con fgets, lee el ejemplo que te dejaron antes.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

ZedGe

Cita de: Eternal Idol en 26 Diciembre 2011, 13:32 PM
ZedGe: tambien podes usar stdin con fgets, lee el ejemplo que te dejaron antes.

Lo uso, pero al querer poner ese szReaderBuffer[255] = nuevo->Persona.Nombre me dice que no puedo guardar un char[xx] a un char*

Eternal Idol

LEE de nuevo y presta atencion, no intentes asignar cadenas.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

BlackZeroX

#8
ammm...



#define SIZE_RUT 15
#define SIZE_NAME 15
#define SIZE_SURNAME 15

//typedef struct DataClient_ DATACLIENT, *LPDATACLIENT;
//typedef struct Node NODE, *LPNODE;

typedef
struct DataClient_
{
    char szRut[SIZE_RUT];
    char szName[SIZE_NAME];
    char szSurName[SIZE_SURNAME];
}
DATACLIENT, *LPDATACLIENT;

typedef
struct Node_
{
   DATACLIENT dataClient;
   Node_* lpNext;
}
NODE, *LPNODE;;

/*
///No le veo utilidad a esta estructura...
typedef
struct LIST
{
    Nodo *lpBEGIN;
}
LIST, *LPLIST;
*/

void unloadNodes(LPNODE lpNode)
{
    if (!lpNode)
        return;
    unloadNodes(lpNode->lpNext);
    fprintf(stdout, "%s\n", lpNode->dataClient.szName); //  Antes de descargas mostramos...
    free(lpNode);
}

int main()
{
    LPNODE lpNodeFirst = (LPNODE)malloc(sizeof(NODE));
    LPNODE lpNodeNow = lpNodeFirst;
    int i = 0;

    for (i = 0; i < 10; ++i)
    {
        memset(lpNodeNow->dataClient.szName, 0, (SIZE_NAME - 1));
        fgets(lpNodeNow->dataClient.szName, (SIZE_NAME - 1), stdin);
        lpNodeNow->lpNext = (i < 9) ? (LPNODE)malloc(sizeof(NODE)): NULL;
        lpNodeNow = lpNodeNow->lpNext;
    }
    /// Descargar TODOS los Nodos empesando desde el ultimo.
    unloadNodes(lpNodeFirst);

    return EXIT_SUCCESS;
}



Dulces Lunas!.
The Dark Shadow is my passion.

ZedGe

okas gracias con el código queda mas claro