[MIPS32未知长度的读取字符串

问题描述 投票:0回答:1

我一直在尝试read_string syscall($ a0中的缓冲区,$ a1中的长度),发现如果我输入的字符数超过length个,则只有length-1字符将被写入内存。

[自然,我的问题是:除了逐字节读取并在堆栈中动态分配内存之外,还有什么方法可以读取未知大小的字符串?我没有在文档中找到任何与此相关的信息(或就此而言,在任何地方)。

mips mips32 qtspim
1个回答
0
投票

除了逐字节读取之外,还有一种读取大小未知的字符串的方法

否,如果您想读取字符串,或者不需要回车终止符-或-无需静态选择缓冲区长度,则必须分别读取字符。

并在堆栈中动态分配内存?

堆栈是一种方法,但是由于堆栈向低位地址增长,并且字符串向高位地址“增长”,因此您需要进行一些调整,例如在知道长度后进行复制。

堆是另一种方式;您将需要以所需的任何增量不断增加堆,但是堆的增长方向与字符串的增长方向相同。堆为您提供了sbrk功能(扩展我的地址空间,而不是malloc / free,因此,当您完成内存使用后,您可以重用自己,但不能这样“释放”它)。

© www.soinside.com 2019 - 2024. All rights reserved.