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

C语言学习历程——字符串训练03

2017-04-30 11:52 489 查看
3,自我实现atoi(字符串转整形)

如:“123”转换成 123

      “-123”
转换成 -123




分析:将各位数取出来转换为整形,负号单独处理。



下面是代码实现:



/************************************************

  字符串转整型  "123" -> 123  "-123" -> -123

************************************************/

#include <stdio.h>

#include <stdlib.h>

int StringToInteger(char *str)

{
int flag = 1;
int num = 0;
 //最后的整型数
char *p = str;
 

if (str == NULL)
{
return -1;
}

if (*p == '-')
 //负数字符串,放置-1标志
{
while (*p)
{
*p = *(p + 1);
 //将字符串整体前移1位变成正数处理
p++;
}
flag = -1;
}

p = str;

while (*p)
{
num *= 10;
num += *p - '0';
 //字符转整型
p++;
}

if (flag == -1)
{
return (flag * num);
 //负数,则返回-1*num
}
else
{
return num;
}

}

int main()

{
char *str =
4000
NULL;
 //含有数字串的字符串
int num = 0;
 //最后的整型数
str = (char *)malloc(100 * sizeof(char));

printf ("please input a string(number string):\n");
scanf ("%s", str);
printf ("The original string is %s\n", str);

num = StringToInteger(str);
if (num == -1)
{
printf ("function StringToInteger error!\n");
return -1;
}

printf ("The result is %d\n", num);

free(str);

return 0;

}


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