程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 字符串轉化為數字

字符串轉化為數字

編輯:C++入門知識

將給定字符串轉化為數字,如果結果為正較大返回2147483647,如果結果為負且較大返回-2147483648。字符串除包含數字外還包含空格及其他字符,因此需要對不是數字的字符進行處理。
[cpp]
#include <stdio.h>  
 
int isspace(int x) 

    if(x == ' '|| x == '\t' || x == '\n' || x == '\f' || x == '\b' || x == '\r') 
    return 1; 
    else   
    return 0; 

 
int isdigit(int x) 

    if(x <= '9' && x >= '0')          
    return 1; 
    else  
    return 0; 

 
__int64 toInteger(char string[]) 

    int c;              /* current char */ 
    __int64 total;         /* current total */ 
    int sign;           /* if '-', then negative, otherwise positive */ 
 
    /* skip whitespace */ 
    while(isspace((int)(unsigned char)*string) ) 
    ++string; 
 
    c = (int)(unsigned char)*string++; 
    sign = c;           /* save sign indication */ 
    if(c == '-' || c == '+') 
    <span style="white-space:pre">  </span>c = (int)(unsigned char)*string++;    /* skip sign */ 
     
    total = 0; 
     
    while(isdigit(c)) 
    { 
    total = 10 * total + (c - '0');     /* accumulate digit */ 
    if(total >= 2147483647 && sign != '-') 
    { 
            total = 2147483647; 
        break; 
    } 
    else if(total >= 2147483648 && sign == '-') 
    { 
        total = 2147483648; 
        break; 
    } 
 
    c = (int)(unsigned char)*string++;    /* get next char */ 
    } 
     
    if(sign == '-') 
    return -total; 
    else 
    return total;   /* return result, negated if necessary */ 

 
int main() 

    char string[100] = {0}; 
    scanf("%s", &string); 
    printf("%I64d\n", toInteger(string)); 
    return 0;  
} www.2cto.com
測試用例:
100” output 100
“12343abc100”  output 12343
“23424339999999999999”  output  2147483647
“-100” output  -100
“+50” output 50
“   100” output 100
“12 20” output 12

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved