Как убрать завершающий ноль?

Тема в разделе "WASM.UNIX", создана пользователем Pamidor, 14 фев 2009.

  1. Pamidor

    Pamidor New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2009
    Сообщения:
    3
    Всем привет!
    Написал программку (FASM), которая создаёт папку с именем, которое ей присвоит пользователь:
    Код (Text):
    1. format ELF executable
    2. mov eax,4
    3. mov ecx,msg
    4. mov edx,msgsz
    5. int 80h
    6. mov eax,3
    7. mov ebx,2
    8. mov ecx,buf
    9. mov edx,100
    10. int 80h
    11. mov eax,39
    12. mov ebx,buf
    13. mov ecx,1FFh
    14. int 80h
    15. mov eax,1
    16. int 80h
    17. buf: rb 10
    18. msg db 'Type the path: '
    19. msgsz=$-msg
    Вроде всё работает, папки создаются где укажешь (если права позволяют). Но вот в чём проблема: в конце названий папок впихивается завершающий ноль, и папки эти в консоли видны как folder?. Именно так, с вопросительным знаком на конце. При переходе в неё происходит перенесение курсора, как будто имя состоит из двух строчек. Как же убрать этот ноль? В пркреплённом файле вид из ГУЯ.
    Помогите кто чем может! Заранее благодарен.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    потому что когда ты делаешь рид с консоли то название папки берется с завершающим \n переводом строки (а вовсе не нулем). Это от нажатия ентер при вводе.
    Решение - вырезать посл. символ из буффера
     
  3. Pamidor

    Pamidor New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2009
    Сообщения:
    3
    Ну то что от нажатия на энтер это понятно. Вот я бы хотел уточнить как убрать последний символ из буфера.
     
  4. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    Нулем забить
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Pamidor
    ну ээ - string[strlen(string)-1]=0;

    что-то типа

    Код (Text):
    1. mov edi, buf
    2. mov ecx, -1
    3. xor al, al
    4. repne scasb
    5. dec edi
    6. dec edi
    7. mov [edi], al
    если я ничего не напутал