当您使用系统读取从控制台获取字符串时,如何删除添加在字符串末尾的换行符?我想在它的末尾添加一个 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
read
返回字符数,因此您可以索引缓冲区并检查最后一次读取是否为换行符。或者只是无条件地0
用这个覆盖它:
...
syscall ; rax = sys_read(0, buf, max_len)
mov byte [rsi + rax - 1], 0
假设没有错误,并且输入字符串是用换行符而不是 EOF 提交的。
(Linuxsyscall
保留除 RAX(返回值)和 RCX/R11 之外的所有 reg,因此 RSI 仍然保持name
.)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句