Число разделить пробелами

Тема в разделе "WASM.ASSEMBLER", создана пользователем 10_Brasil, 10 сен 2006.

  1. 10_Brasil

    10_Brasil New Member

    Публикаций:
    0
    Регистрация:
    20 апр 2006
    Сообщения:
    54
    Например есть число 1234567890, как вывести его на экран в виде строки
    1 234 567 890, знаю что в Api такая ф-я есть только название забыл...
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    10_Brasil
    А че сложно самому написать, на асме это запросто!
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    10_Brasil
    Нет такой функции в API. Есть функции, форматирующие числа в денежных единицах в зависимости от локализации, но это не совсем в тему.
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    можно сделать примерно так:
    Код (Text):
    1. .data?
    2.     buffer    256 dup(?)
    3.     outBuf    256 dup(?)
    4. .data
    5.     fmt       db  "%lu",0
    6.  
    7. .code
    8.     invoke wsprintf, addr buffer, addr fmt, 1234567890
    9.     invoke lstrlen, addr buffer
    10.     xor    edx,edx
    11.     mov    ecx,3
    12.     div    ecx
    13.     lea    ebx,buffer
    14.     lea    ecx,outBuf
    15.     test   edx,edx
    16.     jnz    _loop
    17. _preset:
    18.     mov    edx,3
    19. _loop:
    20.     mov    al,[ebx]
    21.     mov    [ecx],al
    22.     test   al,al
    23.     jz     _end
    24.     inc    ebx
    25.     inc    ecx
    26.     dec    edx
    27.     jnz    _loop
    28.     mov    byte ptr[ecx],32
    29.     inc    ecx
    30.     jmp    _preset
    31. _end:
    32.     invoke MessageBox, NULL, addr outBuf, NULL, MB_OK
     
  5. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    10_Brasil
    название забыл
    Может быть GetNumberFormat?
    Код (Text):
    1. #define WIN32_LEAN_AND_MEAN
    2. #include <windows.h>
    3. #include <stdio.h>
    4.  
    5. int main(void)
    6. {
    7.   char in[] = "987654321.12";
    8.   char out[256] = {0};
    9.  
    10.   printf("%s\n", in);
    11.  
    12.   GetNumberFormat((LCID) NULL, 0, in, NULL, out, sizeof(out));
    13.  
    14.   printf("%s\n", out);
    15.  
    16.   return 0;
    17. }
    выхлоп (разумеется в ansi)
    Код (Text):
    1. 987654321.12
    2. 987 654 321,12
     
  6. 10_Brasil

    10_Brasil New Member

    Публикаций:
    0
    Регистрация:
    20 апр 2006
    Сообщения:
    54
    q_q
    Да, спасибо, именно эту функцию я встречал ранее...

    EvilsInterrupt
    Без обид, но зачем посты набирать? Если есть что толковое подсказать - говори, а советы давать все могут.