我做了两个功能。
函数是main和stringToInt。
在main函数中有两个参数(int argc,char * argv [])。它从命令行获取参数。
例)./a.out 1 2 3 4
第二个函数,我相信是char * argv []的一个参数。
我如何编码采用null-terminate ASCII字符串并返回stringToInt函数中的值。
任何帮助/示例都会很棒。
感谢。
答案 0 :(得分:0)
试试这个:
int strToInt(char *str){
int total = 0;
while(*str)
total = total * 10 + (*str++ - '0');
return total;
}
这是如何运作的:
它开始循环遍历每个字符,将其转换为整数(通过ascii):
所以
'1' - '0' = 1
'2' - '0' = 2
等等
功能:
char
形式的整数。 total
乘以10
所以当我们说“123”传递给strToInt()
LOOP1:
遇到'1'
,total=0
'1'
按公式转换为数字1:'1' - '0'
total
现在total * 10 + 1
= 0 + 1
= 1
LOOP2:
遇到'2'
,total = 1
'2'
现已按公式转换为数字'2' - '0'
total
现在total * 10 + 2
= 10 + 2
= 12
。
LOOP3:
遇到'3'
,total = 12
'3'
现已按公式转换为数字3:'3' - '0'
total
现在total * 10 + 3
= 12*10 + 3
= 123
。
LOOP4:
遇到NULL,函数返回total
= 123。
答案 1 :(得分:0)
也许你应该试试这个:
int my_get_nbr(char *str)
{
int res;
if (*str == '-')
return (-my_get_nbr(str + 1));
if (*str == '+')
return (my_get_nbr(str + 1));
res = 0;
while (*str)
{
res = res * 10;
res = res + *str - '0';
str = str + 1;
}
return (res);
}