atoi 函数 实现 请高手帮我把下面的程序每一步写上注释
函数名:atoi功能:把字符串转换成整型数用法:intatoi(constchar*str);程序:/****intatoi(char*str)-Convertstrin...
函数名: atoi
功 能: 把字符串转换成整型数
用 法: int atoi(const char * str);
程序:
/***
*int atoi(char *str) - Convert string to int
*
*Purpose:
* Converts ASCII string pointed to by str to binary.
*
*Entry:
* str = ptr to string to convert
*
*Exit:
* return int value of the string
*
*Exceptions:
* None - overflow is not detected.
*
**************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int atoi(const char * str)
{
assert(str);
int total = 0;
int sign = 1;
if(*str == '-'){
sign = -1;
str ++;
}
else if(*str == '+'){
str++;
}
while(*str){
unsigned int ch = *str - '0';
assert(ch <= 9 && ch >= 0);
total = total * 10 + ch;
str ++;
}
return ret * sign; } 展开
功 能: 把字符串转换成整型数
用 法: int atoi(const char * str);
程序:
/***
*int atoi(char *str) - Convert string to int
*
*Purpose:
* Converts ASCII string pointed to by str to binary.
*
*Entry:
* str = ptr to string to convert
*
*Exit:
* return int value of the string
*
*Exceptions:
* None - overflow is not detected.
*
**************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int atoi(const char * str)
{
assert(str);
int total = 0;
int sign = 1;
if(*str == '-'){
sign = -1;
str ++;
}
else if(*str == '+'){
str++;
}
while(*str){
unsigned int ch = *str - '0';
assert(ch <= 9 && ch >= 0);
total = total * 10 + ch;
str ++;
}
return ret * sign; } 展开
2个回答
展开全部
函数名: atoi
功 能: 把字符串转换成整型数
用 法: int atoi(const char * str); //函数签名
程序:
/***
*int atoi(char *str) - Convert string to int //将一个字符串转为一个整数
*
*Purpose: //意义
* Converts ASCII string pointed to by str to binary. //将由str所指向的ASCII型字符串转为二进制
*
*Entry: //输入
* str = ptr to string to convert //str,指向字符串的指针
*
*Exit: //输出
* return int value of the string //返还字符串所代表的整数值
*
*Exceptions: //异常
* None - overflow is not detected. //无。无法检测溢出
*
**************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int atoi(const char * str)
{
assert(str); //如果并未输入任何字符串或一个无效字符串则退出运行
int total = 0; //要输出的结果
int sign = 1; //数字的符号
if(*str == '-'){ //如果第一个字负号
sign = -1; //输出为负数
str ++; //移至下一个字符
}
else if(*str == '+'){ //如果第一个字符是正号
str++; //无改动,移至下一个字符
}
while(*str){ //当字符串还为结尾
unsigned int ch = *str - '0'; //当下字符所代表的数字
assert(ch <= 9 && ch >= 0); //如果该数字不再0至9的范围内退出运行
total = total * 10 + ch; //原数字增加一位
str ++; //移动指针到下一个字符
}
return ret * sign; } //返还所得到的整数,加入符号
最后一行是不是错了?ret根本没有定义,应该是total * sign才对。
功 能: 把字符串转换成整型数
用 法: int atoi(const char * str); //函数签名
程序:
/***
*int atoi(char *str) - Convert string to int //将一个字符串转为一个整数
*
*Purpose: //意义
* Converts ASCII string pointed to by str to binary. //将由str所指向的ASCII型字符串转为二进制
*
*Entry: //输入
* str = ptr to string to convert //str,指向字符串的指针
*
*Exit: //输出
* return int value of the string //返还字符串所代表的整数值
*
*Exceptions: //异常
* None - overflow is not detected. //无。无法检测溢出
*
**************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int atoi(const char * str)
{
assert(str); //如果并未输入任何字符串或一个无效字符串则退出运行
int total = 0; //要输出的结果
int sign = 1; //数字的符号
if(*str == '-'){ //如果第一个字负号
sign = -1; //输出为负数
str ++; //移至下一个字符
}
else if(*str == '+'){ //如果第一个字符是正号
str++; //无改动,移至下一个字符
}
while(*str){ //当字符串还为结尾
unsigned int ch = *str - '0'; //当下字符所代表的数字
assert(ch <= 9 && ch >= 0); //如果该数字不再0至9的范围内退出运行
total = total * 10 + ch; //原数字增加一位
str ++; //移动指针到下一个字符
}
return ret * sign; } //返还所得到的整数,加入符号
最后一行是不是错了?ret根本没有定义,应该是total * sign才对。
展开全部
函数名: atoi
功 能: 把字符串转换成整型数
用 法: int atoi(const char * str);
程序:
/***
*int atoi(char *str) - Convert string to int
*
*Purpose:
* Converts ASCII string pointed to by str to binary.
*
*Entry:
* str = ptr to string to convert
*
*Exit:
* return int value of the string
*
*Exceptions:
* None - overflow is not detected.
*
**************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int atoi(const char * str)
{
assert(str); /*这个是断言,也就是如果str==NULL程序就会中断*/
int total = 0;
int sign = 1;
if(*str == '-'){ /*这是判断你的是带负号的有符号数*/
sign = -1; /*负,sign就标记为-1*/
str ++; /*移向负号后面的地址*/
}
else if(*str == '+'){ /*为正,sign=1*/
str++; /*移向正号后面的地址*/
}
while(*str){
unsigned int ch = *str - '0'; /*比如'1'-'0'就能得到数字1*/
assert(ch <= 9 && ch >= 0); /*如何符号位后不是数字程序中断*/
/*比如是"123"
第一次结束total=1
第二次结束total=12 ,total=1*10+2
第三次结束total=123 ,total=12*10+3
*/
total = total * 10 + ch;
str ++;
}
/*这里ret我也不清楚是啥,抱歉
不过我想ret可能包含了total的结果,再乘sign就得到正负数了,
ret在汇编中是返回指令
*/
return ret * sign; }
功 能: 把字符串转换成整型数
用 法: int atoi(const char * str);
程序:
/***
*int atoi(char *str) - Convert string to int
*
*Purpose:
* Converts ASCII string pointed to by str to binary.
*
*Entry:
* str = ptr to string to convert
*
*Exit:
* return int value of the string
*
*Exceptions:
* None - overflow is not detected.
*
**************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int atoi(const char * str)
{
assert(str); /*这个是断言,也就是如果str==NULL程序就会中断*/
int total = 0;
int sign = 1;
if(*str == '-'){ /*这是判断你的是带负号的有符号数*/
sign = -1; /*负,sign就标记为-1*/
str ++; /*移向负号后面的地址*/
}
else if(*str == '+'){ /*为正,sign=1*/
str++; /*移向正号后面的地址*/
}
while(*str){
unsigned int ch = *str - '0'; /*比如'1'-'0'就能得到数字1*/
assert(ch <= 9 && ch >= 0); /*如何符号位后不是数字程序中断*/
/*比如是"123"
第一次结束total=1
第二次结束total=12 ,total=1*10+2
第三次结束total=123 ,total=12*10+3
*/
total = total * 10 + ch;
str ++;
}
/*这里ret我也不清楚是啥,抱歉
不过我想ret可能包含了total的结果,再乘sign就得到正负数了,
ret在汇编中是返回指令
*/
return ret * sign; }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询