我是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
为$t1
,10010000
为$t2
。
问题出在哪里?
10010046
答案 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);
}