上海建设交通网站,医院网站实例,最超值的锦州网站建设,珠海市网站建设的公司文章目录atoi使用方法#xff1a;atoi模拟实现atoi
功能#xff1a;转化字符串到整数 头文件#xff1a; #include stdlib.h int atoi (const char * str); 参数 str#xff1a;要转换为整数的字符串 返回值 如果转换成功#xff0c;函数将转换后的整数作为int值…
文章目录atoi使用方法atoi模拟实现atoi
功能转化字符串到整数 头文件 #include stdlib.h int atoi (const char * str); 参数 str要转换为整数的字符串 返回值 如果转换成功函数将转换后的整数作为int值返回 , 如果没有执行有效的转换则返回零。 注意事项 字符串只能转换数字如字符串包含了数字以外的则提前返回非数字前的字串 使用方法
#includestdio.h
#includestdlib.h
int main()
{char arr[] 123;int ret atoi(arr);if (ret 0){printf(转换失败\n);}else{printf(整型值值 %d\n整型值乘2 %d\n, ret, ret * 2);}system(pause);return 0;
}最终输出结果为 整型值 123 整型值乘2 246 atoi模拟实现
注意事项 判断atoi传过来的参数是否为空指针判断首字符是否为空格如有空格将跳过判断字符串是否为空判断字串正负判断是否为数字,如是非数字提前返回非数字前的字串考虑字串是否为溢出的问题 大于int或小于int判断字串是否非法转换(用一个枚举来判断起始把字符串判定为非法转换如转换成功在判定成 成功转换) #include ctype.h
#includeassert.h
#includestdio.h
#includestdlib.h
enum S
{Value,ErrValue //代表非法转换
};
S ErrValue;
int my_atoi(char* arr)
{//1:判断是否为空指针assert(arr);//2:判断是否为空格while (*arr ){arr;}//判断字符串是否为空if (*arr \0)return 0;//判断正负 flag 为1是正 -1是付int flag 1;if (*arr -){flag -1;arr;}//首字符是否为数字 如果不是数字 就返回0if (!isdigit(*arr))return 0;//使用long long可以接受更长的长度long long n 0;while (*arr ! \0){//判断是否为数字//isdigit判断是否为十进制0-9的数字 头文件#include ctype.h if (isdigit(*arr)) {n n * 10 (*arr - 0);//考虑是否为溢出的问题if (n INT_MAX){n INT_MAX;break;}else if (n INT_MIN){n INT_MIN;break;}}//如果是非数字就退出并返回else{return (int)n;}arr;}//flag决定 N是否为正n * flag;//成功转换if (*arr \0){S Value;//返回值是int类型所以强制类型转换一下return (int)n;}//非法转换return (int)n;
}int main()
{char arr[] 123;int ret my_atoi(arr);if (S Value){printf(成功转换\n);printf(整型值值 %d\n整型值乘2 %d\n, ret, ret * 2);}else{printf(非法转换\n);printf(整型值值 %d\n整型值乘2 %d\n, ret, ret * 2);}system(pause);return 0;
}