C/Visual C - Strings en C

 
Vista:

Strings en C

Publicado por Vasco (2 intervenciones) el 04/03/2003 14:30:58
Estoy intentando enviar un string mediante un socket, el problema surge cuando tengo que enviar una direccion IP en 4 bytes (especificación según el protocolo que estoy usando). Si convierto un int en char y luego lo envío, el caracter que envía al hacer el reverso es el número 48 y no el 0 (si tomase como convención utilizar el 48 como 0 luego no podría enviar el número 48), y si quiero copiar un integer en el string lo corta dado que en C el fin de línea es el 0 (/0). La pregunta es, cómo trasmito un 0 en un string y que no lo corte???
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Strings en C

Publicado por chuidiang (677 intervenciones) el 04/03/2003 14:57:07
Si pusieras algo del código que estás utilizando, mejor (cómo haces la conversión, qué quieres decir con eso de "hacer el reverso", etc).

De todas formas, como 48 es el caracter ascii del 0 creo que la conversión no debe ser muy correcta.
Si tu ip es "a.b.c.d" (en string), deberías convertir cada substring en un entero con alguna función similar a atoi("a")
int a = atoi("a");
int b = atoi("b");
...
Luego, el convertir estos enteros a char es tan simple como asignarlos a una variable de char
char caracter_a = (char)a;
char caracter_b = (char)b;
...

Si a es 0, el caracter_a no es imprimible, si a es 48, el caracter_a es '0', Si a es 65, el caracter_a sale 'A', etc. Estos caracteres podrias enviarlos por el socket.

En el lado que recibe, deberías leerlos en variables de char y luego convertirlos a enteros, asignándolos a una variable entera
int a = (int)caracter_a;
...

Luego, si quieres convertirlo a string, puedes usar la funcion

sprintf (cadena, "%d.%d.%d.%d", a, b, c, d);

Espero no estar muy descaminado al interpretar tu problema.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar