我只是在学习 C,在我的课堂上这是我们第一个程序的一部分。
我正在尝试实现的功能的完整描述:
如果那是tl; dr,关键是我不允许使用其他库中的函数(因此srtol
排除了类似的东西)。
int parseHexString(char *hexString, int *integerRead);
第一个参数是一个以空结尾的 C 字符串,它表示一个十六进制整数。这个函数解析这个字符串,累加它代表的整数值。这个整数值被放置在第二个参数 integerRead 指向的位置。如果遇到错误的十六进制字符,即无效的十六进制值,此函数将停止查看字符串中的其他字符并返回 -1。如果解析了一个好的十六进制值,则返回 0。实现此函数的正确方法是首先查看字符串中的第一个字符,并且不使用堆栈来完成解析。您的第一个汇编语言程序将需要实现这个函数完成的任务,因此您可以通过正确的方式实现这个函数来节省时间。
对于这个函数,不要调用任何库中的任何函数;作为一个例外,仅出于调试目的,您可以使用
printf()
. 如果您在提交作业之前删除调试代码,这将有助于我们的评分。
我不只是在寻找这个功能的完整实现,只是一些提示或提示让我开始。
我觉得好像有一些直观的方法可以做到这一点,但现在我正在空白。我关心我应该如何从字符串的第一个字符开始,然后从那里继续将其转换为十进制。