Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Segmentation fault. Función que devuelve puntero

Estas en el tema de Segmentation fault. Función que devuelve puntero en el foro de C/C++ en Foros del Web. Hola, estoy haciendo las primeras pruebas para programar un protocolo pelcoD en linux por el puerto serie. Aún no está programado pero la idea es ...
  #1 (permalink)  
Antiguo 24/05/2010, 01:43
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Segmentation fault. Función que devuelve puntero

Hola, estoy haciendo las primeras pruebas para programar un protocolo pelcoD en linux por el puerto serie. Aún no está programado pero la idea es que la función pelcoD_message forme el mensage a enviar según el protocolo y los parametros que reciba y devuelva el puntero a ese mensage para enviarlo por el puerto serie con la funcion write_port.
En la primera prueba enviaba lo que escribía del teclado y funcionaba, lo que tiene algún error es la funcion pelcoD_message porque, aunq compila bien, al ejecutar me tira un error de "segmentation fault".
Alguien ve donde meto la pata? según creo uso el malloc correctamente.

Código:
int main(int argc, char **argv){
  int fd;
  char *cadena;
  while(1){
    //scanf("%s", cadena);
    fd = open_port();
    cadena = (char *) pelcoD_message(21, 1, 217);
    write_port(fd, cadena);
  }
  return(0);
}
void *pelcoD_message(int address, int action, int value){
  char *cadena;
  cadena = (char *) malloc(sizeof(char));
  cadena[0] = 'a';
  return cadena;
}
Así mismo una duda, para este protocolo tengo que enviar 7 bytes uno detrás de otro. Uno con el Start of Frame, otro con el address.. etc
Por ejemplo:
0xFF 0x01 ... etc
Como hago eso? porq si lo defino la cadena a enviar como una cadena tipo char me enviará caracteres, no los bytes en si, y si lo defino como int me envíara integers en lugar de bytes.. con eso tengo un pequeño dilema


gracias y un saludo

Etiquetas: fault, puntero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:09.