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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Sber si hay datos en stdin ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sber si hay datos en stdin ?  (Leído 3,408 veces)
lDanny

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Sber si hay datos en stdin ?
« en: 25 Mayo 2010, 10:06 am »

Hola, bueno tengo un problema, lo que pasa es que quiero leer de la entrada standard pero cuando hay datos, pero cuando no hay datos se me queda en bucle esperando a que lleguen datos.

Mi pregunta es como se puede saber si en stdin o entrada standard hay datos para leer o no hay datos.
GRacias


En línea

h0oke


Desconectado Desconectado

Mensajes: 2.059


Coder ~


Ver Perfil WWW
Re: Sber si hay datos en stdin ?
« Respuesta #1 en: 25 Mayo 2010, 10:27 am »

Recuerda que el teclado es un fichero más.

Código
  1. while(!feof(stdin))//Leeria el teclado hasta que se ingrese un caracter de fin de archivo
Para ver si hay algo, deberías leer nuevamente el teclado, y preguntar si en esa variable hay algo.
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.  char *s;
  6.  s = malloc(sizeof(char) * 8);
  7.  fgets(s,8,stdin);
  8.  printf("teclado> %s\n",s);
  9.  free(s);
  10.  s = malloc(sizeof(char) * 8);
  11.  fgets(s,10,stdin);
  12.  printf("HAY ALGO || Nuevo teclado> %s\n",s);
  13.  free(s);
  14. }
Si leyeras el teclado con HOLA MUNDO, en nuevo teclado te quedaria "ndo" si no me equivoco.


« Última modificación: 25 Mayo 2010, 11:06 am por h0oke » En línea

lDanny

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Sber si hay datos en stdin ?
« Respuesta #2 en: 25 Mayo 2010, 11:05 am »

Gracias por la ayuda pero mi problema no es ese creo xD. Bueno igualmente lo he probado y no me va lo que ocurre es que yo no leo del teclado los datos de entrada se los paso mediante tuberias.
ejemplo:
:  echo "hola" | ./programa
esto  me va bien pq leo bien la entrada standard
: ./programa
Me va mal pq se me queda esperando datos.
He usado


Código:
#include <stdio.h>

int main(){

char buffer[2048];
;
while (!feof(stdin)){
fgets (buffer, 2048, stdin);
printf("%s",buffer);
}
return 0;
}

y si lo pruebas ves que cuando ejecuto  ./programa se queda esperando.
Y gracias por tu rapida ayuda.
En línea

h0oke


Desconectado Desconectado

Mensajes: 2.059


Coder ~


Ver Perfil WWW
Re: Sber si hay datos en stdin ?
« Respuesta #3 en: 25 Mayo 2010, 11:25 am »

Te refieres a esto?
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(){
  4.  
  5. char *buffer;
  6. buffer = malloc(sizeof(char)*2048);
  7. fgets(buffer,2048,stdin);
  8. while (*buffer != '\n'){
  9.  printf("%s",buffer);
  10.  free(buffer);
  11.  buffer = malloc(sizeof(char)*2048);
  12.  fgets (buffer, 2048, stdin);
  13. }
  14. free(buffer);
  15. return 0;
  16. }
« Última modificación: 25 Mayo 2010, 11:28 am por h0oke » En línea

lDanny

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Sber si hay datos en stdin ?
« Respuesta #4 en: 25 Mayo 2010, 11:36 am »

La verdad como ves el codigo que me as pasado es exacto lo que me pasa cuando no le paso nada.
Es por eso que quiero saber cuando hay o no hay datos en la entrada.
Pq no quiero que se me quede esperando a leer datos.
y de nuevo gracias por la ayuda
En línea

h0oke


Desconectado Desconectado

Mensajes: 2.059


Coder ~


Ver Perfil WWW
Re: Sber si hay datos en stdin ?
« Respuesta #5 en: 25 Mayo 2010, 11:37 am »

De nadas.

Salu2
En línea

lDanny

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Sber si hay datos en stdin ?
« Respuesta #6 en: 25 Mayo 2010, 11:39 am »

Ya pero sabes alguna manera de que no se quede en bucle? al no haber datos en la entrada?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C] Limpiando la stdin correctamente...
Programación C/C++
zShackra 9 5,259 Último mensaje 12 Noviembre 2014, 20:44 pm
por zShackra
El bendito stdin...
Programación C/C++
zShackra 4 3,158 Último mensaje 26 Noviembre 2014, 09:32 am
por zShackra
Definición de stdin en C
Programación C/C++
fafafa01 8 4,833 Último mensaje 10 Septiembre 2017, 12:39 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines