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

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

#define INT_MAX ((1<<31)-1)
#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 = -1;
        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==-1) ? INT_MIN : INT_MAX;

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

    return num*flag;
}

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

    if (s == NULL)
        return;

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

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

int main()
{
    char s[] = "111111|-123213|dsafd| adf | -123123213213123|adaew|12334243243243";
    strToNum(s);
    //printf("max int  %d, min int %d\n", INT_MAX, INT_MIN);
    return 0;
}
时间: 2024-10-19 09:33:04

字符转换为数字,以|分割的相关文章

js字符转换为数字

转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行:对其他类型返回的都是NaN(Not a Number). 一些示例如下: 复制代码 代码如下: parseInt("1234blue"); //returns 1234parseInt("0xA"); //returns 10pa

[Arduino] 在串口读取多个字符串,并且转换为数字数组

功能如题目.在串口收到逗号分割的6串数字比如100,200,45,4,87,99然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值代码注释很详细了,就不再说明了. //定义一个comdata字符串变量,赋初值为空值 String comdata = ""; //numdata是分拆之后的数字数组 int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0; void setup() { //定义

python学习:python 字符与数字转换函数

整数字符串转换为对应的整数 int('12') 小数字符串转换为对应小数 float('12.34') 数字转换为字符串 str(123.45) ASCII码转换为相应字符 chr(97) 字符转换为响应ASCII码 ord('a')

剑指Offer解题报告(Java版)——字符串转换为数字 49

? ? 引言 ? ? STOI是很常见的一道题,leetcode上也有,字符串转换为数字一般都会有现成的函数去实现这样的功能,但有时候需要我们理解其中的具体实现,因为虽然是个很常见的问题,但实际上需要考虑的问题还是很多的,尤其是corner case的处理,而这类问题一般要考虑两点:一点是符号,另外一点是越界 ? ? 分析问题 ? ? 如果字符串前面有空格怎么办,一般来说中间是没有空格的,但是前后可能有空格,所以我们首先需要去掉多余的空格字符,用到trim函数 ? ? 然后就是字符串中有可能第一

将字符转换为unicode码

将字符转换为unicode码: /** * unicode转义字符 * @param ch * @param out */ public static void unicodeEscape(int ch, CharArr out) { out.write('\\'); out.write('u'); //字符ch向右移动12位之后,取最后一位 out.write(HEX_CHARS[ch>>>12]); //字符ch向右移动8位之后,取最后一位 out.write(HEX_CHARS[(

Javascript学习笔记:2种字符串转换为数字的方式

①使用parseInt/parseFloat(在ECMAScript6中是Number.parseInt/Number.parseFloat) 1 console.log(parseInt('a10'));//NaN 2 console.log(parseInt('1a0'));//1 3 console.log(parseInt('10a'));//10 4 console.log(parseInt('10'));//10 5 6 console.log(parseFloat('a10.1')

C语言中将字符串转换为数字的方法

C语言提供了几个标准库函数,可以将字符串转换为任意类型(整型.长整型.浮点型等)的数字.以下是用atoi()函数将字符串转换为整数的一个例子: # include <stdio. h># include <stdlib. h>void main (void) ;void main (void){    int num;    char * str = "100";    num = atoi(str);    printf("The string 's

把字符串转换为数字

C当中有一些函数专门用于把字符串形式转换成数值形式. printf()函数和sprintf()函数 -->通过转换说明吧数字从数字形式转换为字符串形式: scanf()函数把输入字符串转换为数值形式: 应用场景: 编写程序需要使用数值命令形参,但是命令形参被读取为字符串.要使用数值必须先把字符串转换为数字. atoi()函数: int atoi(char *str); 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int mai

【译】将字符转换为双精度浮点型

目录:https://www.cnblogs.com/liqingwen/p/10261436.html 包含数字的字符可以使用 char.GetNumericValue 方法转换为数字(双精度浮点型). 代码如下: double d = char.GetNumericValue('5'); Console.WriteLine(d); 输出值:5 那么,为什么当一个 char ,并且只能为单字符时,GetNumericValue 会返回一个单位数“数字”(“0”到“9”)的 double 变量呢