atoi函式的實現及注意事項

2021-07-11 13:57:58 字數 887 閱讀 5661

atoi函式的實現及注意事項

在編寫模擬實現atoi函式時,不應該只考慮到只有的數字字串的簡單情況,除此之外,還應該考慮到以下幾種狀況。

1. 指標為null

2. 空字串

3. +,-號處理

4. 溢位處理

5. 遇到異常字元怎麼處理

至於atoi函式的返回值,如果只是返回0或者1,沒有狀態標記,那麼這個0或者1是正常狀態的0或者1 ("0"),還是異常狀態的0或者1("0abcd")。

一次應該加上乙個全域性變數控制當前轉換後的數字是正常狀態,還是異常狀態。

對於儲存最終的轉換後的數字,我用的是long long 型別,原因是要用long long型別的數字與int_max與int_min比較,判斷值是否溢位。

只有當前字串轉換到'\0'位置,則表示該數字是正常狀態(其它情況在當前異常位置會結束字串到數字的轉換)。

#include#include#include#include//isdigit(),isspace()

int state = 1; //0表示正常,1表示異常

int my_atoi(const char *str)

// + - 號處理

if (*str == '-')

else if(*str=='+')

while (*str)

if (num < int_min)

} else

str++;

} //表示結果正常

if (*str == '\0')

return ret;

}int main()

else

system("pause");

return 0;

}

函式的注意事項

1 函式的形參列表可以是多個,返回值列表也可以是多個。2 形參列表和返回值列表的資料型別可以是值型別和引用型別 3 函式的命名遵循識別符號命名規範,首字母不能是數字,首字母大寫該函式可以被本報檔案和其它包檔案使用,類似public,首字母小寫,只能被本包使用,其它包檔案不能使用,類似private ...

memset函式用法及注意事項

memset 函式是記憶體賦值函式,用來給某一塊記憶體空間進行賦值的。其原型是 void memset void dst,int val,size t size 使用時在檔案頭加上 include stdlib.h dst是目標起始位址,val是要賦的值,size是要賦值的位元組數 例1 char ...

fscanf函式用法及注意事項

fscanf.c this program writes formatted data to afile.it then uses fscanf to read the various databackfromthefile.include file stream intmain void 注意事項...