当前位置: 首页 > news >正文

谁做响应式网站个人博客模板

谁做响应式网站,个人博客模板,上海景泰建设股份有限公司网站,页面设计脚怎么设计文章目录 前言一、atoi()库函数的介绍及使用1.1 atoi()库函数介绍1.2 atoi()库函数使用 二、atoi()库函数的模拟实现2.1 函数设计2.2 函数实现思路2.3 具体实现2.4 测试 总结 前言 本篇文章介绍c语言中库函数atoi()的使用,以及模拟实现库函数。 一、atoi()库函数的…

文章目录

  • 前言
  • 一、atoi()库函数的介绍及使用
    • 1.1 atoi()库函数介绍
    • 1.2 atoi()库函数使用
  • 二、atoi()库函数的模拟实现
    • 2.1 函数设计
    • 2.2 函数实现思路
    • 2.3 具体实现
    • 2.4 测试
  • 总结


前言

本篇文章介绍c语言中库函数atoi()的使用,以及模拟实现库函数。


一、atoi()库函数的介绍及使用

1.1 atoi()库函数介绍

以下是cplusplus网站关于atoi()库函数的介绍。atoi()库函数
在这里插入图片描述
说明:

  • 首先,这个函数会将字符串前面的空格一一跳过,直到遇到非空格字符;这个非空字符分为以下情况

    • 如果非空字符为字母,则返回结果为0
      比如"abc123",转换得到0
    • 如果非空字符为’-',则会转换得到一个负整数且这个负整数没有超过int表示的范围,正常返回这个数;如果这个数超过了int型数据的表示范围,则返回-2147483648
      例如,
      “-12345”,转换得到整型数值-12345
      "-123456789123456"转换得到-2147483648
    • 如果非空字符为‘+’或者为数字字符,则会转换得到一个正整数且这个正整数没有超过int表示的范围,正常返回这个数;如果这个数超过了int型数据的表示范围,则返回2147483647
      例如,
      "+12345"转换得到整型数值12345
      "123456"转换得到整型数值12345
      "123456789123456"转换得到2147483647
  • 如果str指向的是一个空字符串或者只包含空格,则返回值为0.

  • 如果两个数字字符之间存在其他非数字字符,则转换非数字字符之前的数字字符。
    “123ab112”,只会转换得到整型数值123

1.2 atoi()库函数使用

  • 负数转换
    在这里插入图片描述

  • 负数溢出转换
    在这里插入图片描述

  • 正数转换
    在这里插入图片描述

  • 正数溢出转换
    在这里插入图片描述

  • 包含非数字字符
    (1)数字字符后面包含其他字符
    在这里插入图片描述

(2)数字前面包含非数字字符
在这里插入图片描述

  • 只包含非数字字符
    在这里插入图片描述

二、atoi()库函数的模拟实现

2.1 函数设计

函数名:StrToInt
函数返回值类型: int
函数参数类型: const char* str
int StrToInt(const char* str);

2.2 函数实现思路

  1. 函数指针的非空判断
//指针的非空判断 利用断言
assert(str);
  1. 空字符串的判断
//如果第一个字符为'\0',则表示字符串为空串
if('\0' == *str)
{return 0;
}
  1. 跳过字符串前面的空格字符
//利用库函数提供isspace()函数判断
while(isspace(*str)) str++;
  1. 正数和负数的符合判断
int flag = 1; //默认为正数
switch(*str)
{
case '-': flag = -1;
case '+': str++;
}
  1. 字符数字与整型数值的转换
//1.如果溢出判断使用long long
long long ret = 0;
while(isdigit(*str))  //isdigit()函数为库函数
{ret = 10*ret + flag*(*str - '0');//溢出判断if(ret > INT_MAX){return INT_MAX;}else if(ret < INT_MIN){return INT_MIN;}str++;
}
return  (int)ret;//2. 如果溢出判断不使用long long
int ret = 0;
while(isdigit(*str))
{int ConvertDigit = *str - '0';if((ret > INT_MAX/10) || ((INT_MAX/10 == ret) && (ConvertDigit > 7))){return flag > 0? INT_MAX:INT_MIN;}ret = ret*10 + ConvertDigit; 
}
return flag > 0 ? ret : -ret;

2.3 具体实现

  • 方法一(使用long long)
#include<assert.h>
#include<limits.h>
#include<ctype.h>
//version 1.3 
int StrToInt(const char* str)
{//1. 空指针判断assert(str);//2. 空字符串判断if ('\0' == *str){return 0;}//3. 去掉空格while (isspace(*str)) str++;long long ret = 0; //long long 用于判断转换结果是否超出int的表示范围int flag = 1; //用于判断是否为负数,默认为非负数//4. + - 判断switch (*str){case '-': flag = -1;case '+': str++;}//转换操作while (isdigit(*str)){ret = ret * 10 + flag * (*str - '0');//5. 溢出判断if (ret > INT_MAX){return INT_MAX;}if (ret < INT_MIN){return INT_MIN;}++str;}return (int)ret;
}
  • 方法二(不使用long long)
#include<assert.h>
#include<limits.h>
#include<ctype.h>// version: 1.4 
// 溢出判断不使用long long
// 1. ConvertDigit = *str - '0'   ->得到字符转换成的数字
// 2. ret = ret*10 + ConvertDigit ->得到计算的结果,默认为正数,最后根据符号返回结果  
// 3. (正数溢出判断) 上一次 ret > INT_MAX/10   
//				 说明下一次计算的ret >= INT_MAX		   则正数溢出
// (负数溢出判断) 上一次 ret == INT_MAX/10 && ConvertDigit > 7  
//				 说明下一次相加 ret >= INT_MIN的绝对值   则负数溢出
//  INT_MAX = 2147483647   INT_MIN = -2147483647-1
// 最后根据flag返回结果  flag > 0 返回INT_MAX  否则返回INT_MIN    
// 4. flag > 0  直接返回 ret   flag < 0 返回-ret
int StrToInt(const char* str)
{//1. 空指针判断assert(str);//2. 空串判断if ('\0' == *str){return 0;}//3. 清除空格while (isspace(*str)) str++;//4. 正负号判断int flag = 1;  //默认为正数switch (*str){case '-': flag = -1;case '+': str++;}//5. 转换int ret = 0;while (isdigit(*str)){int ConvertDigit = *str - '0';//溢出判断if ((ret > (INT_MAX / 10)) || (((INT_MAX/10) == ret) && (ConvertDigit > 7))){return (flag > 0) ? INT_MAX : INT_MIN;}ret = ret * 10 + ConvertDigit;str++;}return flag > 0 ? ret : -ret;
}

2.4 测试

  • 负数
    在这里插入图片描述

  • 负数溢出
    在这里插入图片描述

  • 正数
    在这里插入图片描述

  • 正数溢出
    在这里插入图片描述

  • 包含非数字字符
    (1)数字字符后面包含非数字字符
    在这里插入图片描述
    (2)数字字符前面包含非数字字符
    在这里插入图片描述


总结

本篇文章介绍了库函数atoi()的使用,并使用不同的思路模拟实现atoi()。

http://www.wangmingla.cn/news/135924.html

相关文章:

  • 网站开发的主要工作步骤seo整站优化新站快速排名
  • 如何查看网站是用什么模板做的营销培训课程有哪些
  • 湘潭做网站出色磐石网络站长之家
  • 网站链接数怎么找当地的地推团队
  • 有什么可以接单做设计的网站网店代运营和推广销售
  • 网站改版原因上海百度分公司电话
  • 网站建设需求文档下载推广引流渠道
  • 网站导航为什么用ul列表做贵州网站seo
  • 蚌埠市建设学校网站巨量广告投放平台
  • c bs 网站开发代码站长平台官网
  • 开发网站放大文字功能怎么写今日热搜头条
  • 网站banner一般多大淘宝运营一般要学多久
  • 杭州做电商网站怎么做网络营销
  • wordpress整站搬家自媒体平台有哪些
  • 黄冈网站推广软件ios有没有好用的网站推荐
  • 兰州做it网站运营的怎么样太原百度快速优化
  • 网站内页降权 关键词排名下降百度收录域名
  • 注册咨询公司公司网站如何seo
  • 服装网站模板下载免费软文发布平台有哪些
  • 河南省建设厅网站官网长沙seo网站优化公司
  • 微信网站开发服务中国十大网站
  • wordpress主题url武汉seo优化公司
  • b2b2c商城开发seo服务外包公司
  • 如何加快网站打开速度谷歌推广真有效果吗
  • 如何取外贸网站域名比较经典的营销案例
  • 威海美容网站建设google推广服务商
  • 网站建设的要点是什么意思app营销十大成功案例
  • 本地郑州网站建设百度导航和百度地图
  • 百度推广官网登录朔州网站seo
  • 网站seo推广营销软文广告300字范文