Запись в файл из консоли приводит к появлению пробелов - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь записать в файл через консоль, используя ReadString, который сохраняет в buffer, который будет использоваться для вызова WriteToFile. При этом текст записывается правильно в правильном порядке, но также записываются оставшиеся пробелы.

ie. 4-символьное слово и 46 пробелов в предположении SIZEOF buffer = 50

Как бы мне обойти это и написать текст без пробелов и разделителя? Я также собираюсь вызывать readfromfile и go через слова по одному и проверять, соответствуют ли они другому слову, используя str_compare.

Я пытался использовать Str_trim в буфере, но не имел удача

Код ниже

include Irvine32.inc
Include macros.inc

.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword

BUFFER_SIZE = 50

.data

filename BYTE 80 DUP(?)
fileHandle HANDLE ?
buffer BYTE BUFFER_SIZE DUP(?)

char BYTE ' '

.code
main proc

; create file to write to

mWrite "Enter filename: "
mov edx, OFFSET filename
mov ecx, SIZEOF filename
call ReadString

mov edx, OFFSET filename
call CreateOutputFile
mov fileHandle, eax

; write to output file

mov edx, OFFSET buffer
mov ecx, SIZEOF buffer
mWrite "Enter student identification number: "
call ReadString

INVOKE Str_trim, ADDR buffer, char

mov eax, fileHandle
mov edx, OFFSET buffer
mov ecx, SIZEOF buffer
call WriteToFile

mov edx, OFFSET buffer
mov ecx, SIZEOF buffer
mWrite "Enter student first name and lastname: "
call ReadString

INVOKE Str_trim, ADDR buffer, char

mov eax, fileHandle
mov edx, OFFSET buffer
mov ecx, SIZEOF buffer
call WriteToFile

mov edx, OFFSET buffer
mov ecx, SIZEOF buffer
mWrite "Enter student date of birth: "
call ReadString

INVOKE Str_trim, ADDR buffer, char

mov eax, fileHandle
mov edx, OFFSET buffer
mov ecx, SIZEOF buffer
call WriteToFile
    invoke ExitProcess,0
main endp
end main

Если, возможно, я не имею никакого смысла вообще, я включил проблему, над которой я работаю

Напишите программу, которая создает новый текстовый файл. Запросите у пользователя идентификационный номер студента, фамилию, имя и дату рождения. Запишите эту информацию в файл. Таким же образом введите 10 записей и закройте файл.

Попросите пользователя ввести имя, фамилию и дату рождения. Основываясь на этих входных данных, найдите текстовый файл и напечатайте «Match», если входная запись существует, и напечатайте «NotFound», если входная запись не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...