规定字符具体作⽤\n换⾏
\f清屏并翻页\r回车
\t制表符atoi函数原型
⼀.atoi()函数的功能:
1.定义:将字符串转换成整型数,跳过前⾯的空格字符,直到遇上数字或正负号才开始做转换,⽽再遇到⾮数字或字符串时('\0')结束转化,并将结果返回(返回转换后的整型数)。
2.头⽂件: #include <stdlib.h>
3.函数原型:int atoi(const char *nptr);
4.实现时需要注意的问题:
(1)检查字符串是否为空,为空则返回
(2)对空格和规定字符的处理, 若是,则跳过,不影响接下来的处理(很多⼈的处理忘了规定字符这回事..)
结果仍然为11
(3)正负号(+-)的处理
(4)结束条件:遇到⾮数字或者字符'\0'结束
(5)溢出处理,正溢出返回int上限(2147483647),负溢出返回int下限
int main(void)
{
char *a="-2147483650";
int b=atoi(a);
printf(" %d",b);
return0;
}
输出结果为-2147483648
char *a="2147483649";printf函数原型在什么头文件里
int b=atoi(a);
printf(" %d",b);
return0;
输出结果为2147483647
代码如下:
#include<stdio.h>
#include<iostream>
using namespace std;
enum error{correct,incorrect,overflow,null};
int error=correct;//默认是正确的
int myatoi(const char *str)
{
int flag=1;
if(str==NULL)
{
error=null;
return0;
}
while(*str==''||*str=='\t'||*str=='\f'||*str=='\r'||*str=='\n')
str++;
if(*str=='-')//负数的处理,直接让计算得出的数乘-1即可
{
flag=-1;
str++;
}
else if (*str=='+')//注意对正负号我⽤的不是循环,正负号只有作为第⼀个字符出现才是合法的 str++;
int num=0;
while(*str!='\0')//*str=='\0'也是结束条件之⼀
{
if(*str>='0'&&(*str<='9'))
{
num=num *10+*str-'0';//注意是‘0‘
//溢出处理稍后贴上
str++;
}
else
{
error=incorrect;//⾮法
break;
}
}
return num*flag;
}
int main()
{
char str[30];
printf("请输⼊字符串:");
gets(str);
int result = myatoi(str);
switch(error){
case correct:
cout << "字符串" << str << " 对应的整数是:" << result <<endl;
break;
case null:
cout << "空指针错误" <<endl;
break;
case incorrect:
cout << "输⼊的字符串中有⾮数字字符" <<endl;
cout << result <<endl;
break;
case overflow:
cout << "输⼊的字符串对应的数字使得Int类型溢出" <<endl;
cout << result <<endl;
}
return0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论