2015-04-18 7 views
0

Я хочу сделать что-то вроде:fprintf неподписанных долго, как полукокс

unsigned long addr = 0x000decaf; 
... 
fprintf(fp, "AAAAAAAAAAAAAAAAAA$s", addr); 

Нормально я бы

unsigned long addr = 0x000decaf; 
memcpy(buf, &addr, 4); 

Но поскольку моя программа использует GetLine() на входной файл, чтобы иметь что-то например, AAAA\x00\x01BBBB будут рассмотрены как 'A','A','A','A','\','x','0','0',.... Какие из трюков я могу сделать, чтобы getLine() выполнял эквивалентность того, что я пытаюсь сделать с memcpy()

+0

Что точный выход можно ожидать? – rici

+0

Im память, я хочу что-то вроде 0x41414141 0x000decaf 0x42424242 – Sugihara

+0

Название «fprintf ...» подразумевает вопрос о выходе. Post спрашивает: «Каковы некоторые из трюков, которые я могу сделать, чтобы make getLine()« ... »подразумевает вопрос о вводе. Рекомендовать переписывать сообщение, чтобы исправить это противоречие. – chux

ответ

0

Just использовать %lu маркер для распечатки unsigned long:

fprintf(fp, "%lu", addr); 

Если вы хотите в шестнадцатеричном:

fprintf(fp, "0x%x", addr); 
+2

'% lx' вместо'% x' – BLUEPIXY

+0

fprintf() write как AAAAA13200BBBB, поэтому, когда getLine() читает его, он будет создавать массив символов как ['A', 'A', 'A', 'A' , 'A', '1', '3', '2', '0', '0', 'B', '...] вместо AAAA [независимо от того, что 0xdeadbeef представлено как] BBBBB. – Sugihara

+0

я хочу что-то в памяти, как 0x41414141 0x42424242 0xDEADBEEF и не 0x41414141 0x010300200 0x4242424242 – Sugihara

Смежные вопросы