atoi和itoa的模擬實現

2021-08-24 20:21:43 字數 1542 閱讀 2752

函式原型:

int atoi (const char * str);
該函式的功能是將字串轉化為整型。分以下幾種情況:

1)如果該字串的最開始是 -,並且後面加的是數字,那麼轉化的整數是負整數。

2)如果該字串的最開始是+ 或者是數字,那麼轉化的是正整數。

3)如果最開始是-/+ 加其他字元,就是不合法的,直接返回0.

4)考慮溢位,正溢位和負溢位。

模擬實現:

//atoi的模擬實現

int my_atoi(const char* str)

//當字串開始有空格或tab的時候,往後走。

while(isspace(*str))

str++;

while(*str)

//考慮是否溢位

//此時的num沒有符號位,若出現負數,必出現了溢位

//flag == 1時,num為負,就是正溢。2147483648存不下,就會變為負數。

//flag == -1時,num為負,就是負溢,此時發生溢位,num存不下,對於負數而言,就會變大。

//比如:-2147483649,flag==-1,此時的str="2147483649",存不下,在記憶體中就成了-2147483646,會變大。

if(num < 0)

else if(num > (signed int)0x80000000)

}//另外一種判斷溢位的方法:

//此時num 的型別要為long long ,否則無法判斷

//if(((num > 0x7fffffff) && (flag == 1))

// || ((num*flag < (signed int)0x80000000) && (flag == -1)))

// return num*flag;

}int main()

函式原型:

char *  itoa ( int value, char * str, int base );
該函式的功能是將base進製的整型轉化為相應字串。

value:要轉換為字串的整型

str:用於儲存轉換來的字串

base:用於表示作為字串的值的數值基數,介於2和36之間,其中10表示十進位制基,16進製制,8八進位制和2二進位制

//itoa的模擬實現

char* my_itoa(int value,char* str,int base)

//base的範圍為:[2-36],36進製就是:0-9 && a-z

if(base < 2 || base > 36)

int num = 1;

while(num)

while(!tmp.empty())

*str = '\0';

return dest;

}int main()

模擬實現C庫的atoi和itoa

1 c庫的atoi的模擬實現 atoi的作用就是將字串轉為整形,它的介面函式是 int atoi const char str 要模擬實現c庫的atoi函式需要考慮以下幾種特殊情況 1 空串,返回0 2 是否存在空格,如果全部是空格呢?全部是空格,返回0 3 是否存在符號位 4 符號位之後是否是全0...

模擬實現atoi

注意到細節問題 一 函式引數 1 形參虛const修飾 2 注意對形參指標判空 二 需要考慮到的細節 1 負數和0 注意區別傳入字元 0 和異常時返回值 2 空字串 3 溢位問題 4 輸入字串非非數字字元 int g flag 0 區別空串 long long strtodig const char...

模擬實現atoi

atoi函式是把字串轉換成整型數的乙個函式,應用在電腦程式和辦公軟體中。int atoi const char nptr 函式會掃瞄引數 nptr字串,跳過前面的空白字元 例如空格,tab縮排 等,可以通過isspace 函式來檢測 直到遇上數字或正負符號才開始做轉換,而在遇到非數字或字串結束符 0...