Resultados 1 al 6 de 6

porque no me lee bien?

  1. #1 porque no me lee bien? 
    Medio
    Fecha de ingreso
    Apr 2006
    Mensajes
    85
    Descargas
    0
    Uploads
    0
    tengo este código:

    Código:
    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>
    
    void imprimir_prompt();
    void eliminar_salto_linea(char *cad);
    void leer_linea_ordenes(char *buf);
    
    main(int argc,char *argv[])
    {
    
    char *linea;
    
    do
    {
    	imprimir_prompt();
    	leer_linea_ordenes(linea);
    	printf("\nlinea=&#37;s",linea);
    
    }while(1);
    
    }
    
    void imprimir_prompt()
    {
    	char *buf;
    
    	buf=getcwd(NULL,0);
    	printf("\npr&#225;ctica5@SSOO:%s$",buf);
    	
    }
    
    void eliminar_salto_linea(char *cad)
    {
    	int i;
    
    	for(i=0;i<sizeof(cad);i++)
    	{	
    		if(cad[i]=='\n') cad[i]=' ';
    		
    	}
    }
    
    void leer_linea_ordenes(char *buf)
    {
    	
    	scanf("%s",buf);printf("\nbuf=%s",buf);
    	eliminar_salto_linea(buf);
    	
    }
    que de momento imprime un prompt, y espra a que le metas las instrucciones, una vez hecho esto, te lee la linea de ordenes y se supone que te borra los saltos de linea, pero no lo hace bien, por que si le metes una cadena, un espacio y otra cadena, como que te lo lee en 2 pasadas..y no se xk???
    Última edición por kamsky; 05-05-2007 a las 16:05
    Citar  
     

  2. #2  
    Iniciado
    Fecha de ingreso
    Apr 2007
    Ubicación
    alcoy
    Mensajes
    44
    Descargas
    0
    Uploads
    0
    Cambia

    printf("\nlinea=&#37;s",linea);

    a

    printf("\nlinea=%p",linea);

    Cambiando esa l&#237;nea no te ir&#225; pero ver&#225;s que l&#237;nea apunta a NULL, entonces tienes dos opciones, pasar l&#237;nea por referencia, o hacer que pasar l&#237;nea devuelva un char * c&#243;mo valor de retorno.

    Y reza tres avemarias y un padrenuestro a ver si resulta.
    Sólo se que no sabiendo nada ya sé bastante. Luego... existo.
    Citar  
     

  3. #3  
    Medio
    Fecha de ingreso
    Apr 2006
    Mensajes
    85
    Descargas
    0
    Uploads
    0
    y como paso linea por referencia? si ya es un puntero, pues ya se pasa...no?, si fuera una var, para pasarlo por referencia se hace con &, pero como ves, uso un puntero...
    de otdas formas he probado a declarar linea as&#237;: char linea[1000];
    y pasarlo como te digo, con un & y el resultado es el mismo..no entiendo porque lee en tandas..cada espacio una..??
    Última edición por kamsky; 05-05-2007 a las 17:10
    Citar  
     

  4. #4  
    Iniciado
    Fecha de ingreso
    Apr 2007
    Ubicación
    alcoy
    Mensajes
    44
    Descargas
    0
    Uploads
    0
    Creo que el problema est&#225; en asignar memoria

    prueba


    char *linea;
    void leer_linea_ordenes (char **pszBuf)
    {
    *pszBuf = (char *)malloc(...);
    scanf("&#37;[^\n]", *pszBuf);
    etc, etc

    A ver si te va.
    Sólo se que no sabiendo nada ya sé bastante. Luego... existo.
    Citar  
     

  5. #5  
    Medio
    Fecha de ingreso
    Apr 2006
    Mensajes
    85
    Descargas
    0
    Uploads
    0
    muchas gracias, lo del mallo no lo hice, pero si que cambie la forma de leer y le puse un scanf(" %[^\n]", buf); y ahora tira bien el malloc no hace falta no?
    Citar  
     

  6. #6  
    Iniciado
    Fecha de ingreso
    Apr 2007
    Ubicación
    alcoy
    Mensajes
    44
    Descargas
    0
    Uploads
    0
    El malloc devuelve un puntero a un bloque de memoria en el stack reservado para tu aplicaci&#243;n, o m&#225;s bien, adem&#225;s de devolver el puntero, tambi&#233;n reserva ese trozo. Resumiendo, es para reservar memoria. Qu&#233; te funciona as&#237;?
    Me alegro . Siento no haberte servido de ayuda.
    Sólo se que no sabiendo nada ya sé bastante. Luego... existo.
    Citar  
     

Temas similares

  1. la he jodido bien jodida
    Por bender5 en el foro DIGITAL+
    Respuestas: 3
    Último mensaje: 06-09-2007, 13:55
  2. ya esta bien....
    Por mrdplas en el foro DIGITAL+
    Respuestas: 5
    Último mensaje: 16-09-2006, 15:18
  3. soy deplano bien novato
    Por uzuel en el foro OFF-TOPIC
    Respuestas: 7
    Último mensaje: 01-10-2003, 18:52
  4. no m compila bien
    Por defcondos en el foro GENERAL
    Respuestas: 10
    Último mensaje: 15-05-2002, 23:14

Marcadores

Marcadores