模擬實現C庫的atoi和itoa

2021-08-05 22:29:06 字數 1212 閱讀 5894

1、c庫的atoi的模擬實現

atoi的作用就是將字串轉為整形,它的介面函式是:

int atoi ( const

char * str );

要模擬實現c庫的atoi函式需要考慮以下幾種特殊情況:

1>、空串,返回0

2>、是否存在空格,如果全部是空格呢?全部是空格,返回0

3>、是否存在符號位

4>、符號位之後是否是全0,返回0

5>、是否存在特殊字元,特殊字元指的是字母,字元,空格等(指出現在正確的數字之後的特殊字元)

6>、是否會溢位,溢位了如何解決?

7>、空串和全部是空格或者全部是0都返回的是正數0,如何區分這種情況呢?設定乙個全域性的變數,如果是不同的情況則設定成不同的值。

**實現如下:

enum

state

;int state = empty; //該全域性變數是用來決定返回的0是哪乙個情況

int atoi(const string& str)

if (*pstr == '\0') //全部是空格

//確定符號位

int flag = 1; //正數

if (*pstr == '-')

else

if (*pstr == '+')

while (*pstr == '0') //判斷是否存在0

if (*pstr == '\0') //全部是字元0

while (*pstr != '\0')

}++pstr;

}return num;

}

2、c庫的itoa的模擬實現

itoa的作用就是將整形轉為字串,它的介面函式是:

char *  itoa ( int

value, char * str, int

base );

需要考慮負數的情況

**實現如下:

void itoa(int num, char *str)

if (flag < 0)

*str = '\0';

//此時是逆序存放的,需要翻轉過來

char *right = str - 1;

while (left < right)

}

模擬實現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...

模擬實現atoi

atoi函式的簡單實現 函式用途 將字串轉為整形 函式原型 int atoi const char str 遇到非數字或字串結束符 0 才結束轉換,並將結果返回。include using namespace std 考慮溢位 如果轉化數字超過int範圍 int占用4位元組,32位元,資料範圍為 2...