如何阻止用户输入在 MIPS 中打印新行?

问题描述

我的大学计算机科学课程有一项作业,要求我们使用用户输入打印出两个相邻的三角形。用户必须输入一个整数作为三角形的高度和一个用于打印三角形的字符。

我可以很好地接受三角形高度的整数,但是每次打印用户输入的字符都会开始一个新行,而不是打印在同一行上。

这是我获取和打印输入的方式:

    #Prompts user for character
    li $v0,4
    la $a0,charPrompt
    syscall

    #Stores character from user
    li $v0,8
    la $a0,userInput
    li $a1,20
    move $t1,$a0
    syscall
    
    #Prints the character
    li $v0,userInput
    syscall 

这是我的输出。为了弄清楚三角形的形状,我在.data下打印了"*"字符。所有的 "*" 都在正确的位置,但两个 "e" 应该形成这些三角形的顶部。最终目标是使用用户输入的任何字符而不是 "*" 打印这些精确的三角形。

----e
-------------e

---*-*-----------***
--*---*---------*****
-*-----*-------*******
*********-----*********

我在 .data 下有它,如下所示:

userInput: .space 1

解决方法

当使用系统调用 #8 时,MARS 将用户的换行符添加到您从系统调用收到的结果字符串中,他们用来终止输入。

有多种选择:

  • 只需从系统调用返回的字符串中删除换行符

  • 从该输入中提取您想要的内容,例如第一个字符,忽略字符串的其余部分

  • 使用系统调用 #12 代替逐个系统调用的输入

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...