ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
28 января
1567490 Топик полностью
abivan (Вчера, 21:02, просмотров: 65) ответил Idler на Почему через пол-века от "истоков", каждому программисту приходится писать свою реализацию printf? Почему выводить лидирующие нули он может, а заменить их пробелами, чтобы значащая часть всегда была на одном месте - нет? Почему для вывода десятичного числа с точкой в произвольном месте я не могу просто указать число отделяемых знаков и для вывода в вольтах напряжения, хранимого в милливольтах, я не могу указать несуществующий формат ("%.3d", V_DRN) а вынужден
еще в 1985, Phoenix Computer Products Corp. and Novum Organum, Inc. была написана целая библиотека, в том числе для конвертации данных в аски и работы со строками. Все что вам надо можно сделать без принтфа. Библиотекой могу поделиться. fprintf тяжел и неповоротлив. 

можно просто преобразовать милливольты в аски и вставить точку в нужное место. Есть в библиотеке и функции с выравниванием строк.

       rstr = strdel (str, count);                             /(char*)/
             удалить указанное число символов из начала строки.
        rstr = strinsc (str, ichr);                             /(char*)/
             вставить символ в  начало строки.
        rstr = strninsc (str, ichr, maxlen);                    /(char*)/
             вставить символ в начало строки: усечет строку
             если ее размер (с этим символом) превышает данный максимум.
        rstr = strins (str, insert_str);                        /(char*)/
             вставить строку в начало другой строки.
        rstr =strnins (str, insert_str, maxlen);                /(char*)/
             вставка строки в начало другой строки:
             усекает строку если ее новый размер превышает данный максимум.
        rstr = strover (str, overlay_str);                      /(char*)/
             наложение строки на другую строку.
Пример:
     strcpy (str,"5678").
     strnins (str, "1234", 10);          /* str будет "12345678"*/
     strcpy (str, "56789ABC");
     strnins (str, "1234",10);         /*str будет "123456789"*/
     strcpy (str, "paqe of report");
     strover (str+5, "1");             /*str будет "paqe 1 of veport"*/
     strcpy (str, "ABCDE");
     strover (str, "123");             /str будет "123DE"*/
     strcpy (str,"ABCDE");
     strover (str, "1234567");         /str будет "12345"*/