C/Visual C - write

 
Vista:

write

Publicado por fernando (5 intervenciones) el 23/01/2007 20:34:37
main(){
int pid;
pid=getpid();
write(1,&pid,sizeof(pid));
}

¿xq en vez del pid , me saca por pantalla unos caracteres raros?
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:write

Publicado por Fran (122 intervenciones) el 24/01/2007 03:56:03
emmm, q onda si haces printf("%d",pid)?
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

RE:write

Publicado por Nelek (816 intervenciones) el 24/01/2007 08:04:08
No estoy seguro pero creo que el Write lo que hace es escribir en binario o hex, asi que por eso te salen esos simbolos raros. Por ejemplo yo estoy trabajando con unos ficheros cuyo contenido (abriendolo con un editor Hex como el UltraEdit) me dice:

70 86 95 23 00 00 01 00 4C 00 00 00 24 00 00 00

pero sin embargo, si abro el fichero normal me dice:

*+·....L...$...

Te referias a eso?
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

RE:write

Publicado por fernando (5 intervenciones) el 24/01/2007 08:56:25
el printf si que lo saca bien ,
entonces, que solucion puedo tomar ?
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

RE:write

Publicado por Fran (122 intervenciones) el 24/01/2007 17:55:05
TENES Q USAR WRITE SI O SI???!!!! porq sino no veo q problema hay en usar printf, sino hace como dice NElek
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

RE:write

Publicado por Nelek (816 intervenciones) el 24/01/2007 10:00:11
Hola, esto esta sacado del MSDN de VC++ 6

ostream::write

ostream& write( const char* pch, int nCount );

ostream& write( const unsigned char* puch, int nCount );

ostream& write( const signed char* psch, int nCount );


Parameters

pch, puch, psch : A pointer to a character array.

nCount : The number of characters to be written.


Remarks

Inserts a specified number of bytes from a buffer into the stream. If the underlying file was opened in text mode, additional carriage return characters may be inserted. The write function is useful for binary stream output.

Por lo que debe de ser lo que te estoy diciendo. Con el printf le estas indicando el formato de la variable que quieres sacar por pantalla, al decir %d le indicas que es de tipo "int". En cambio el "write" por lo que he entendido al consultar, te escribe el valor sin formato alguno "ostream", es decir, la secuencia de "0" y "1" que toque. Por eso te mete los simbolos raros, porque esos simbolos es como el procesador interpreta el valor de dicha secuencia. Mira el mensaje de arriba.
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