elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  programa punteros c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: programa punteros c  (Leído 1,754 veces)
chicainge

Desconectado Desconectado

Mensajes: 15


Ver Perfil
programa punteros c
« en: 5 Marzo 2015, 22:01 pm »

No se por que el programa se salta el segundo scanf. Ayuda plis

Código:
#include <stdio.h>
#include <stdlib.h>

struct D{
   int dato,dato2;
};

int main(){
 
  struct D d;
  struct D *p=&d;
 
  printf("introduce dato: \n");
  scanf("%d",&(*p).dato);
  printf("dato guardado con punto ((*D).dato) %d \n",(*p).dato);
  printf("introduce dato 2: \n");
  scanf("vuelve a escribir un valor para dato(%d)\n",&p->dato2);
  printf("dato guardado por flecha(->) %d \n",p->dato2);
 
  system("PAUSE");
  return 0;
}

GRACIAS.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: programa punteros c
« Respuesta #1 en: 5 Marzo 2015, 22:21 pm »

Código
  1. scanf("vuelve a escribir un valor para dato(%d)\n",&p->dato2);

Confundiste printf con scanf?


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: programa punteros c
« Respuesta #2 en: 6 Marzo 2015, 03:01 am »

No se por que el programa se salta el segundo scanf.
Como ya te comento ivancea96 el error se encuentra en la llamada a scanf:
Código
  1. scanf("vuelve a escribir un valor para dato(%d)\n",&p->dato2);

----

Solo para redondear el tema: cuando colocas texto literal en la cadena de formato este se consumirá solo si se encuentra literalmente en el stream (en este caso la entrada estándar).

En tu programa para que este genere la salida esperada debes introducir el primer numero, inmediatamente después el texto "vuelve a escribir un valor para dato(" y justo después de este el segundo numero. Por ejemplo:
Código:
introduce dato:
123vuelve a escribir un valor para dato(456  <== Entrada del programa
dato guardado con punto ((*D).dato) 123
introduce dato 2:
dato guardado por flecha(->) 456
Presione una tecla para continuar . . .

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Errores con programa (punteros)
Programación C/C++
jamatbar 0 1,544 Último mensaje 10 Diciembre 2011, 18:59 pm
por jamatbar
Duda con punteros (error programa)
Programación C/C++
apoeti 7 3,610 Último mensaje 12 Agosto 2012, 01:19 am
por rir3760
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 5,211 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
[Ayuda] Programa con Punteros en C
Programación C/C++
jack09 7 3,531 Último mensaje 20 Enero 2013, 02:01 am
por BatchianoISpyxolo
Error en programa de punteros
Programación C/C++
Error 404: 7 2,994 Último mensaje 24 Mayo 2013, 11:24 am
por leosansan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines