题目描述
- myatoi 实现; elementtype myatoi( const char*str );
- 转译 str 所指的字节字符串中的整数值,转化成一个有意义的整数输出。
- 例子: hao123:123 -hao123:123 hao-123:-123 hoo123de-45:12345 +123haode:123 haode-45ni321:-45321
- 在输出中,正或负号是可选的。
- 在输出中,数位是必须的。
代码实现
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef long long elementype;
elementype myatoi(const char* str);
elementype strtonum(int numbers[], int size);
int main()
{
char str[MAXSIZE];
elementype numstr;
scanf_s("%s", str, MAXSIZE);
numstr = myatoi(str);
printf("%lld\n", numstr);
system("pause");
return 0;
}
elementype myatoi(const char* str)
{
elementype ret = 0;
int firstnum = 1;
int flag = 1;
int numbers[MAXSIZE] = {
0 };
int size = 0;
while (*str != '\0')
{
if (*str >= '0' && *str <= '9')
{
if (firstnum)
{
if (*(str - 1) == '-')
{
flag = -flag;
}
firstnum = 0;
}
numbers[size++] = *str - '0';
}
++str;
}
ret = strtonum(numbers, size);
return (flag * ret);
}
elementype strtonum(int numbers[], int size)
{
elementype ret = 0;
elementype weight = 1;
for (int i = size - 1; i >= 0; --i)
{
ret += numbers[i] * weight;
weight *= 10;
}
return ret;
}
调试结果