函式原型:
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...