当您使用系统读取从控制台获取新的换行符时,如何删除添加在字符串末尾的换行符? 我想在其末尾添加一个0,以使用该字符串打开文件
我正在这样输入:
mov rdx,name_len ; size_t count
mov rsi,name ; char *buf
mov rdi,0 ; int fd, 0 for stdin
mov rax,0 ; system read
syscall
答案 0 :(得分:1)
read
返回字符数,因此您可以索引缓冲区并检查最后读取的内容是否为换行符。或者只是使用0
无条件地将其覆盖:
...
syscall ; rax = sys_read(0, buf, max_len)
mov byte [rsi + rax - 1], 0
假定没有错误,并且输入字符串是用换行符而不是EOF提交的。
(Linux syscall
保留了除RAX(返回值)和RCX / R11以外的所有注册表,因此RSI仍然保留name
。)