atoi函数返回值(如何区分atoi()的非法输入返回值0,与输入的0)
本文目录
- 如何区分atoi()的非法输入返回值0,与输入的0
- 请问:C++ atoi函数 怎么用谢谢大家~
- 函数atoi()有什么用处,他的头文件是什么它在Linux下的Vi编辑器能用吗
- 如何用C语言实现atoi()函数
- 编写一个函数atoi,作用是将一个整数字符串转换成一个整数
- atoi函数输入负数的时候返回的那个数也是负数吗
- 如何用c语言实现atoi函数
- atoi和strtol的区别和使用
如何区分atoi()的非法输入返回值0,与输入的0
经实践,cout《《atoi(“0abc“);与cout《《atoi(“abc“);的输出结果都是0。
而且,因为atoi返回值可能是int范围中的任何一个数,所有返回值均可能在str中出现,所以仅仅依靠返回值int无法完全确定是否有数字字符存在。
如果你的char* str里存在‘0’,我觉得还是自己写一个函数吧,通过参数NumExit确定有没有数字。
int f(char* str,bool& NumExist)
{
NumExit=false;
int Num=0;
for(int i=0;i!=’\0’;i++)
{
if(str[i]是可以忽略的字符,如空格)
continue;
if(str[i]是数字、正负号等)
{
NumExist=true;
在Num的基础上记录数字;
}
else
return Num;
}
}
请问:C++ atoi函数 怎么用谢谢大家~
atoi函数原型:
int atoi(char *str)
函数用途:
将字符串转换成一个整数值
输入参数:
str 待转换为整型数的字符串
返回值:
成功返回转换后的数值,失败则返回0.
函数atoi()有什么用处,他的头文件是什么它在Linux下的Vi编辑器能用吗
1、atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。
2、头文件: #include 《stdlib.h》
3、它在Linux下的Vi编辑器能用
int atoi(const char *nptr) 函数会扫描参数 nptr字符串,会跳过前面的空白字符(例如空格,tab缩进)等。如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0 。特别注意,该函数要求被转换的字符串是按十进制数理解的。
扩展资料
范例:
1》
#include 《stdlib.h》
#include 《stdio.h》
int main(void)
{
int n;
char *str = “12345.67“;
n = atoi(str);
printf(“string = %s integer =%d\n“, str, n);
return 0;
}
执行结果
string = 12345.67 integer = 12345.000000
2》
#include 《stdlib.h》
#include 《stdio.h》
int main()
{
char a = “-100“ ;
char b = “123“ ;
int c ;
c = atoi( a ) + atoi( b ) ;
printf(“c = %d\n“, c) ;
return 0;
}
执行结果
c = 23
参考资料来源:百度百科—atoi()
如何用C语言实现atoi()函数
要善用百度。。。百度百科就有atoi这个词条,里面有c语言实现的源代码(其实是c++,不过唯一的不同只是它的字符串定义为了const,即常量,表示在函数里不允许改变此字符串内容)
我在这里加上注释简单说明一下该源码
int my_atoi(const char *str){
int result;
//保存返回结果的
int signal = 1;
//保存符号的,默认正数
//判断第一个数字是否合法
if((*str》=’0’&&*str《=’9’)||*str==’-’||*str==’+’){
//如果是-,符号变为-1,指针右移
//如果是+,指针右移(总之指向了第一个数字)
if(*str==’-’||*str==’+’){
if(*str==’-’)
signal = -1;
str++;
}
}
else return 0;//第一个不是+,-或数字,非法返回0
//这里就是转换,是数学的问题就不解释了
while(*str》=’0’&&*str《=’9’)
result = result*10+(*str++ -’0’);
return signal*result;
}
不过这个程序,如果字符串是非法的话,他也会返回直到非法字符之前的数值
比如123abc
返回值就是123
编写一个函数atoi,作用是将一个整数字符串转换成一个整数
#include 《stdio.h》
#include 《conio.h》
#include 《string.h》
int fatoi(char str)
{
int s=0,n,i=0,num=0;
n=strlen(str);
if(str==’-’)
i=1;
if(n》10)
return 0;
for (;i《n;i++)
{
num=(str[i]-48);
s=s+num;
if(i《n-1)
s=s*10;
}
if(str==’-’)
s=-s;
return s;
}
int main()
{
char sc={“-12367890“}; // 调试程序用的数据
int n;
//gets(sc);
n=fatoi(sc);
printf(“\n%d“,n);
getch();
return 0;
}
atoi函数输入负数的时候返回的那个数也是负数吗
是的。
atoi函数在stdlib.h头文件中声明,它接受一个C风格字符串(const char*)作为参数,返回int,表示这个字符串所代表的十进制数。解析过程如下:
函数首先忽略字符串开始的空白字符,直到遇到第一个非空白字符,然后读入正/负号字符(可以没有)以及后面跟着的数字字符,并将它们解释为一个int类型的整数。
从这个解析过程可以看出atoi是可以解析负数的。
样例(摘自cplusplus.com):
#include 《stdio.h》 /* printf, fgets */
#include 《stdlib.h》 /* atoi */
int main ()
{
int i;
char buffer;
printf (“Enter a number: “);
fgets (buffer, 256, stdin);
i = atoi (buffer);
printf (“The value entered is %d. Its double is %d.\n“,i,i*2);
return 0;
}
如何用c语言实现atoi函数
要善用百度。。。百度百科就有atoi这个词条,里面有c语言实现的源代码(其实是c++,不过唯一的不同只是它的字符串定义为了const,即常量,表示在函数里不允许改变此字符串内容)
我在这里加上注释简单说明一下该源码
int
my_atoi(const
char
*str){
int
result;
//保存返回结果的
int
signal
=
1;
//保存符号的,默认正数
//判断第一个数字是否合法
if((*str》=’0’&&*str《=’9’)||*str==’-’||*str==’+’){
//如果是-,符号变为-1,指针右移
//如果是+,指针右移(总之指向了第一个数字)
if(*str==’-’||*str==’+’){
if(*str==’-’)
signal
=
-1;
str++;
}
}
else
return
0;//第一个不是+,-或数字,非法返回0
//这里就是转换,是数学的问题就不解释了
while(*str》=’0’&&*str《=’9’)
result
=
result*10+(*str++
-’0’);
return
signal*result;
}
不过这个程序,如果字符串是非法的话,他也会返回直到非法字符之前的数值
比如123abc
返回值就是123
atoi和strtol的区别和使用
1,atoi的返回值无法区分是正常的返回还是错误的返回,如:
int val;
val = atoi(“abc“); 与val = atoi(“0“);
两者返回的val均为0,因此无法区分哪个是正确parse后的值。
2,strtol函数对异常的返回可以设置errno,从而可以发现异常的返回,如:
errno = 0; /* To distinguish success/failure after call */
val = strtol(str, &endptr, base);
/* Check for various possible errors */
if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
|| (errno != 0 && val == 0)) {
perror(“strtol“);
exit(EXIT_FAILURE);
}
3,strtol函数支持不同进制的转换,而atoi只支持十进制的转换。
函数原型说明:
#include 《stdlib.h》
int atoi(const char *nptr);
#include 《stdlib.h》
long int
strtol(const char *nptr, char **endptr, int base);
更多文章:
jersey devil(When I Get There 歌词)
2024年3月23日 16:50
internet的主要作用是(Internet的主要功能有哪些)
2024年7月19日 18:49
python网络爬虫代码(Python 3网络爬虫学习建议)
2024年7月3日 06:05
z字皮带是什么品牌(皮带头上的z丶h丶lv是分别表示什么牌)
2024年6月19日 05:53
指针变量为什么占4个地址(为什么不同类型的指针变量所占字节数都是4)
2024年8月1日 13:05
android开发工具箱教程(如何通过PC端连接Android设备进行adb调试)
2024年6月23日 02:20
鼠标图标素材(鼠标怎么弄让鼠标单击鼠标指针就会出现一个小红点)
2024年4月28日 11:25
google translate(谷歌最新推出的Translatotron系统是干啥的)
2023年8月29日 19:20
observation deck(observation deck是什么意思啊)
2024年7月4日 05:28
查看mysql的安装路径(Linux怎么查看软件安装路径 查看mysql安装在哪)
2024年8月2日 00:10
java程序设计课程建设方案(2022年山东信息职业技术学院招生简章贫困补助食堂咋样学费收费)
2024年7月1日 04:54