Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/10/2009, 10:13
GagleKas
 
Fecha de Ingreso: abril-2008
Mensajes: 141
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con read

Tu codigo me da error pero me aclaraste sin querer el problema.

Cuando se utiliza el read lee bytes y los guarda en el buffer. No es como el scanf que automaticamente le mete un '\0' al final de la cadena. El read no lo hace por lo que debes ponerselo tu de la siguiente forma:

Quien deba usar las funciones read y write para leer de teclado y escribir por pantalla aqui tiene un ejemplo:

Código:
void out (char* str){
        write (1, str, strlen (str));
}

void in (char* str){
        char buffer[MAX_CHAR];
        int bytes = read (0, buffer, sizeof (buffer));

        if (bytes != -1){
                buffer[bytes - 1] = '\0';
                strcpy (str, buffer);
        }else{
                out ("\n\nError de lectura.\n\n");
        }
}

int main (){
        char buffer[MAX_CHAR];
        char str[MAX_CHAR];
        int n;

        out ("Introduce cadena: ");
        in (str);

        sprintf (buffer, "Cadena introducida: %s. OK!\n\n", str);
        out (buffer);

        out ("Introduce numero entero: ");
        in (str);

        sprintf (buffer, "Numero introducido + 1: %d. OK!\n", atoi (str) + 1);
        out (buffer);

        return 0;
}
Parece muy sencillo, pero este trabajo me ha llevado 2 tardes xD.

Última edición por GagleKas; 22/10/2009 a las 12:16