Консультация № 51905
12.08.2006, 00:33
0.00 руб.
0 1 1
Привет All!
У меня вопрос по работе с нуль терминальными строками:
Я пишу консольное приложение которое читает строку из консоли в буфер который я переделил так :
….
hBuffer equ byte ptr [ebp-8Ch]
….
xor ebx,ebx
push ebx
push nWrite
push nRead
push hBuffer
push hInput
call ReadConsole

где nWrite количество прочитанных байт. Так строка которая содержится в буфере не заканчивается нулём я пытаюсь его дописать в конце:
lea eax, hBuffer r
mov ecx, nWrite
_loop: inc eax
loopnz _loop
xor ebx,ebx
mov [eax],ebx
после этого пытаюсь передать указатель на, теперь уже, нуль терминальную строку в API функцию. Но функция возвращает ошибкуСоответственно вопрос в том как правильно преобразовать полученный буфер в нуль - терминальную строку?

Обсуждение

Неизвестный
12.08.2006, 00:58
общий
это ответ
Здравствуйте, Шурыгин В.В.!

В функцию ReadConsole четвёртым параметром передается указатель на переменную типа DWORD, т.е. должно быть что-то вроде
push addr nWrite
а дописать ноль можно так:
lea eax,hBuffer
add eax,nWrite
mov byte ptr [eax],0
Форма ответа