MIPS汇编语言将预定义字符串与用户输入进行比较

时间:2015-10-17 08:41:02

标签: string compare mips

我是mips的新手,如何将预定义的字符串与用户输入进行比较?

以下是我的代码,要求用户继续或不listings。如果print("Sisesta isikukood") isikukood = str(input()) if (isikukood[:1] == '1' or isikukood[:1] == '3' or isikukood[:1] == '5'): print("He") elif isikukood[:1] == '2' or isikukood[:1]== '4' or isikukood[:1] == '6': print("She") else: print("Vale isikukood") 然后跳回去开始,否则转到最后。最后,如果我输入(Y/N),则Y$t110010000$t2

问题出在哪里?

10010046

1 个答案:

答案 0 :(得分:0)

您试图通过比较地址来比较字符串,这是一种有缺陷的方法。

您所写的内容相当于以下C代码:

char *strY = "Y\n";
char buffer[10];

int main() {
    for (;;) {
        printf("Continue (Y/N)? ");
        scanf("%s", buffer);
        if (buffer != strY)
            break;
    }
    exit();
}

希望很清楚,C代码中的错误是您应该使用strcmp来比较字符串,而不是检查指针是否相等。

因此,您需要在strcmp程序集中编写MIPS函数:

int
strcmp(const char *s1, const char *s2)
{
    for ( ; *s1 == *s2; s1++, s2++)
        if (*s1 == '\0')
            return 0;
    return ((*(unsigned char *)s1 < *(unsigned char *)s2) ? -1 : +1);
}