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;
}
如:“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;
}
相关文章推荐
- C语言学习历程——字符串训练01
- C语言学习历程——字符串训练04
- C语言学习历程——Training04字符串训练02
- C语言学习历程——Training04字符串训练01
- C语言学习历程——字符串训练02
- C语言学习历程——编程练习3——03
- C语言学习历程——Training02位运算03
- C语言学习历程——编程练习2——03
- C语言学习历程——Training01整数算法训练04
- 分支程序设计03 - 零基础入门学习C语言12
- 分支程序设计03 - 零基础入门学习C语言12
- 结构体与共用体03 - 零基础入门学习C语言55
- C语言字符串学习注意事项
- C语言深入学习--checklist(1)字符串
- 文件操作03 - 零基础入门学习C语言62
- 我的C语言学习历程:进阶篇
- 预处理03 - 零基础入门学习C语言52
- 指针03 - 零基础入门学习C语言43
- 我的C语言学习历程:起步篇
- 函数03 - 零基础入门学习C语言34