【问题标题】:MIPS32 read_string of unknown lengthMIPS32 read_string 长度未知
【发布时间】:2020-06-15 18:25:07
【问题描述】:

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

当然,我的问题是:除了逐字节读取和在堆栈中动态分配内存之外,有没有办法读取未知大小的字符串? 我在文档中(或任何地方,就此而言)没有找到任何关于此的内容。

【问题讨论】:

  • 这是 MARS 还是 QTSPIM,还是其他环境?可以加标签吗?
  • @ErikEidt qtspim,感谢提及:)

标签: mips mips32 qtspim


【解决方案1】:

除了逐字节读取之外,有没有办法读取未知大小的字符串

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

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

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

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

【讨论】:

    猜你喜欢
    • 2014-10-05
    • 1970-01-01
    • 2012-05-12
    • 2010-12-05
    • 2016-03-11
    • 2019-12-01
    • 1970-01-01
    • 2016-03-20
    • 2015-04-20
    相关资源
    最近更新 更多