Я пытаюсь написать TCP-сервер, который клиент может использовать для просмотра каталогов сервера. В дополнение к этому я хочу отправить размер каталога, если это обычный файл. Размер файла сохраняется в переменной size_t в структуре «stat». Я делаю это здесь:Преобразование size_t в строку
char *fullName /* The path to the file *.
/**
* Some code here
*/
struct stat buffer;
lstat(fullName, &buffer)
Так что теперь buffer.st_size содержит размер файла. Теперь я хочу записать() его в прослушивающий сокет, но, видимо, мне нужно каким-то образом преобразовать его в строку. Я знаю, что это может быть сделано каким-то образом с помощью побитового оператора смены (>>), но мне кажется слишком больным. Можете ли вы помочь мне здесь (даже если нет других побитовых операторов)?
Кстати это не для школы или ... л
PS: Я бегу это на Linux.
Для тех, кто не имеет верхнюю часть головы ... Вы знаете свой материал! ;-) –
У меня плохой опыт работы с памятью с помощью sprintf() и snprintf(), но это не совсем то, что я хочу, и это моя вина. Я не очень хорошо объяснил это. Я действительно хочу преобразовать размер этого в его масштабирование. например, 123456789 будет написано «117,73 МБ». Теперь я знаю, что могу использовать тот факт, что числа 0-9 имеют один и тот же код ascii для ints и строк, но я не знаю, как его реализовать. Я пробовал несколько вещей, но я терпеть неудачу каждый раз. Спасибо за ваш вклад уже. – revIah
@ user3119598: «У меня плохой опыт работы с памятью с помощью sprintf() и snprintf() ... *« все это просто вопрос обучения. Эти функции сохраняются и используются напрямую. Они гораздо менее опасны, чем их использование, например, их коллеги из 'scanf *()' -clan. Поезжайте, чтобы использовать 'srintf()' -функции, поскольку они являются существенными. – alk