一个十六进制转10进制的程序求改错解决方案

一个十六进制转10进制的程序求改错
#include <stdio.h>
int hex2dec(char *str)
{
int m,i,k;
m=1;
for (i=0,str[i]!='\0';i++)
{
if (str[i]>='0' && str[i]<='9')
k=str[i]-'0';
else if (str[i]>='A' && str[i]<='F')
k=str[i]-'A'+10;
else if (str[i]>='a' && str[i]<='f')
k=str[i]-a+10;
else
return m;
m=16*m+k;
}
return m;
}
main()
{
char str[80];
int n;
gets(str[80]);
n=hex2dec(str);
printf("%d\n",n);
}


------解决方案--------------------
C/C++ code

#include <stdio.h>
#include <string.h>
int hex2dec(char *str)
{
    int m,i,k;
    m=0; //从0开始
    for (i=0; str[i]!='\0';i++) //分号
    {
        if (str[i]>='0' && str[i]<='9')
            k=str[i]-'0';
        else if (str[i]>='A' && str[i]<='F')
            k=str[i]-'A'+10;
        else if (str[i]>='a' && str[i]<='f')
            k=str[i]-'a'+10;   //'a'
        else
            return m;
        m=16*m+k;
    }
    return m;
}
main()
{
    char str[80];
    int n;
    gets(str); //
    n=hex2dec(str);
    printf("%d\n",n);
}