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...