Hello i try to write my own htoi method for convertion hexadecimal values to a int values.
I stuck in.
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
int res = htoi2(argv[1]);
fprintf(stdout, "%s => %d\n", argv[1], res);
return 0;
}
int atoi2(char s[])
{
int i,n;
n=0;
for(i=0;s[i]>='0' && s[i]<='9';++i)
{
n=10*i+(s[i]-'0');
}
return n;
}
/*htoi(s)*/
int htoi2(char s[])
{
int i,n,len;
n=0;
len = strlen(s);
for(i=0; i<len; i++)
{
if(s[i]>='0' &&s[i]<='9')
{
n=16*n+(s[i]-'0');
}
else if(s[i]>='a'&&s[i]<='f')
{
n=16*n+(s[i]-'a')+10;
}
else if(s[i]>='A'&&s[i]<='F')
{
n=16*n+(s[i]-'A')+10;
}
}
return n;
}
It seems to it should work but it doesn’t:(
anyone see some error in code i wrote?
Thanks for advance:)
Problem resolved
/*working code*/
int main(int argc, char **argv)
{
char c[2];
c[0]='F';
c[1]='F';
int res = htoi2(c);
fprintf(stdout, "%d\n", res);
system("pause");
return 0;
}
int atoi2(char s[])
{
int i,n;
n=0;
for(i=0;s[i]>='0' && s[i]<='9';++i)
{
n=10*i+(s[i]-'0');
}
return n;
}
/*htoi(s)*/
int htoi2(char s[])
{
int i,n,len;
n=0;
len = strlen(s);
for(i=0; i<len; i++)
{
if(s[i]>='0' &&s[i]<='9')
{
n=16*n+(s[i]-'0');
}
else if(s[i]>='a'&&s[i]<='f')
{
n=16*n+(s[i]-'a')+10;
}
else if(s[i]>='A'&&s[i]<='F')
{
n=16*n+(s[i]-'A')+10;
}
}
return n;
}
Thanks for help 🙂
You’re looping the wrong way around.
And your
mainis wrong.C-strings need to be 0-terminated. If you want to initialize it “manually”, you could do this:Demo:
Does: