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

c語言 將字符串轉化為數字

編輯:關於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 'str' is %s and the number 'num' is %d. \n",
str, num);
}

atoi()函數只有一個參數,即要轉換為數字的字符串。atoi()函數的返回值就是轉換所得的整型值。

下列函數可以將字符串轉換為數字:
------------------------------------------------------------------------
函數名 作 用
------------------------------------------------------------------------
atof() 將字符串轉換為雙精度浮點型值
atoi() 將字符串轉換為整型值
atol() 將字符串轉換為長整型值
strtod() 將字符串轉換為雙精度浮點型值,並報告不能被轉換的所有剩余數字
strtol() 將字符串轉換為長整值,並報告不能被轉換的所有剩余數字
strtoul() 將字符串轉換為無符號長整型值,並報告不能被轉換的所有剩余數字
------------------------------------------------------------------------

將字符串轉換為數字時可能會導致溢出,如果你使用的是strtoul()這樣的函數,你就能檢查這種溢出錯誤。請看下例:
# include <stdio. h>
# include <stdlib. h>
# include <limits. h>

void main(void);
void main (void)
{
char* str = "1234567891011121314151617181920" ;
unsigned long num;
char * leftover;
num = strtoul(str, &leftover, 10);
printf("Original string: %s\n",str);
printf("Converted number: %1u\n" , num);
printf("Leftover characters: %s\n" , leftover);
}
在上例中,要轉換的字符串太長,超出了無符號長整型值的取值范圍,因此,strtoul()函數將返回ULONG_MAX(4294967295),並使。char leftover指向字符串中導致溢出的那部分字符;同時,strtoul()函數還將全局變量errno賦值為ERANGE,以通知函數的調用者發生了溢出錯誤。函數strtod()和strtol()處理溢出錯誤的方式和函數strtoul()完全相同,你可以從編譯程序文檔中進一步了解這三個函數的有關細節。

################strtoul 很好很強大(將字符串轉換成無符號長整型數)

對fea593ee 這樣的16進制轉換時,strtol就會出現異常。改用strtoul就可以。因為4位二進制第一位不能為1.。。。。否則表示負數。

 

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