您的位置:首页 > 编程语言

【练习题】【C】atoi函数的代码实现

2014-11-05 23:02 543 查看
// Filename: main.c

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "public.h"

// 库函数atoi实现要求:
// 1. 字符串开头如果有空格,则忽略;数字串中间有空格,则认为转换结束;
// 2. 从正号“+”、负号“-”、数字“0-9”开始进行转换,直至遇到非数字“0-9”结束;
// 3. 如果开头正号“+”(或者负号“-”)后面的字符含有正号“+”(或者负号“-”),则后面的正号“+”(或者负号“-”)处结束转换;
// 4. 如果没有任何有效数字,返回0;
int atoi_ex(const char *p)
{
int i = 0;
bool flag = TRUE; // TRUE为正数,FALSE为负数

// 前导空格和正负号处理
while (p)
{
if (' ' == *p)
{
p++;
}
else if ('+' == *p)
{
flag = TRUE;
p++;
break;
}
else if ('-' == *p)
{
flag = FALSE;
p++;
break;
}
else
{
break;
}
}

// 前导空格和正负号已处理完,这里只处理“0-9”的数字,不是数字则结束
while (p)
{
if (*p >= '0' && *p <= '9')
{
i = i * 10 + (*p - 0x30);
p++;
}
else
{
break;
}
}

if (FALSE == flag)
{
i = 0 - i;
}

return i;
}

int main()
{
char a[] = "  -100";
int c, d;

c = atoi(a);
printf("c = [%d].\n", c);

d = atoi_ex(a);
printf("d = [%d].\n", d);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: