1. 程式人生 > >[C/C++筆面試]不使用庫函式將字串轉換為整數

[C/C++筆面試]不使用庫函式將字串轉換為整數

與數字轉換為字串類似,C/C++提供了幾個標準的庫函式,可以將字串轉換為任意型別(整型,長整型,浮點型)的數字。下面列舉其函式

atof();將字串轉換為雙精度浮點型值
atoi();將字串轉換為整型值
atol();將字串轉換為長整型
strtod();將字串轉換為雙精度浮點型值,並報告不能被轉換的所有剩下數字
strtol();將字串轉換為長整型值,並報告不能被轉換的所有剩下的數字
strtoul();將字串轉換為無符號長整型,並報告不能被轉換的所有剩下的數字

筆試面試的時候我們會遇到這樣的題,不使用庫函式將字串轉換為整數,如下

/*********************************************************
-  Copyright (C): 2016
-  File name    : str2int.c
-  Author       : - Zxn -
-  Date         : 2016年08月27日 星期六 12時23分20秒
-  Description  : 

*  *******************************************************/
#include <stdio.h> int str2int(char *str) { int temp = 0; //ptr儲存str字串開頭 const char *ptr = str; //如果第一個字元是正負號,則移到下一個字元 if (*str == '-' || *str == '+') { str++; } while (*str != '\0') { //如果當前字元不是數字,就退出 if ((*str < '0')||(*str > '9')) { break
; } //計算成整數 temp = temp * 10 + (*str - '0'); str++; } //針對負數處理 if (*ptr == '-') { temp = -temp; } return temp; } int main() { int num = 0; char str[10] = {0}; printf("please input string:"); scanf("%s", str); num = str2int(str
); printf("output:%d\n", num); return 0; }

執行結果
這裡寫圖片描述
這裡寫圖片描述