字符转换为数字,以|分割

#include <stdio.h>
#include <stdlib.h>

#define INT_MAX ((1<<31)⑴)
#define INT_MIN (1<<31)

#define isRight(x) (x==' ' || x=='+' || x=='-' || (x>='0'&&x<='9'))
int getNum(char* s, int begin, int end)
{
int flag = 1;
int num = 0;

while (begin<=end && s[begin] == ' ')
begin++;

if (s[begin] == '-')
{
flag = ⑴;
begin++;
}

if (s[begin] == '+')
begin++;

while (begin<=end)
{
if (s[begin]<'0' || s[end]>'9')
{
return 0;
}
if (num>INT_MAX/10 || (INT_MAX==INT_MAX/10 && (s[begin]-'0')>INT_MAX%10))
return (flag==⑴) ? INT_MIN : INT_MAX;

num = num*10+s[begin]-'0';
begin++;
}

return num*flag;
}

/*以|分隔符的数值转换 1面*/
void strToNum(char* s)
{
int a[20];
int i = 0;
int begin;
int end;
int count = 0;

if (s == NULL)
return;

while (s[i]!='' && s[i]=='|')
i++;

while (s[i] != '')
{
begin = i;
while (s[i]!='' && s[i]!='|' && isRight(s[i]))
{
i++;
}
if (s[i]=='' || s[i]=='|')
{
end = i⑴;
a[count++] = getNum(s, begin, end);
printf("a[%d] %d
", count⑴, a[count⑴]);
}
else
{
while (s[i]!='' && s[i]!='|')
{
i++;
}
if (s[i] == '')
return;
}
i++;
}
}

int main()
{
char s[] = "111111|⑴23213|dsafd| adf | ⑴23123213213123|adaew|12334243243243";
strToNum(s);
//printf("max int %d, min int %d
", INT_MAX, INT_MIN);
return 0;
}

 

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » 字符转换为数字,以|分割

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡