[C/C++筆面試]不使用庫函式將字串轉換為整數
阿新 • • 發佈:2019-02-06
與數字轉換為字串類似,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;
}
執行結果