1、atoi (表示 ascii to integer)是把字符串轉(zhuǎn)換成整型數(shù)的一個(gè)函數(shù),應(yīng)用在計(jì)算機(jī)程序和辦公軟件中。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站托管維護(hù)等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對(duì)手中脫穎而出創(chuàng)新互聯(lián)。
2、頭文件: #include stdlib.h
3、它在Linux下的Vi編輯器能用
int atoi(const char *nptr) 函數(shù)會(huì)掃描參數(shù) nptr字符串,會(huì)跳過前面的空白字符(例如空格,tab縮進(jìn))等。如果 nptr不能轉(zhuǎn)換成 int 或者 nptr為空字符串,那么將返回 0? 。特別注意,該函數(shù)要求被轉(zhuǎn)換的字符串是按十進(jìn)制數(shù)理解的。
擴(kuò)展資料
范例:
1
#include stdlib.h
#include stdio.h
int main(void)
{
int n;
char *str = "12345.67";
n = atoi(str);
printf("string = %s integer =%d\n", str, n);
return 0;
}
執(zhí)行結(jié)果
string = 12345.67 integer = 12345.000000
2
#include stdlib.h
#include stdio.h
int main()
{
char a[] = "-100" ;
char b[] = "123" ;
int c ;
c = atoi( a ) + atoi( b ) ;
printf("c = %d\n", c) ;
return 0;
}
執(zhí)行結(jié)果
c = 23
參考資料來源:百度百科—atoi()
golang語言本身就是c的工具集,開發(fā)c的程序用到的大部分結(jié)構(gòu)體,內(nèi)存管理,攜程等,golang基本都有,他只是在這個(gè)基礎(chǔ)上又加了一些概念這里說一個(gè)很小的問題,就是字節(jié)數(shù)組轉(zhuǎn)string的問題,網(wǎng)上大部分都是這樣轉(zhuǎn)的(包括google上):string(p[:]),這個(gè)轉(zhuǎn)完了是有問題的,我們再來看一下string這個(gè)結(jié)構(gòu)體:
struct String
{
byte* str;
intgo len;
};
這個(gè)結(jié)構(gòu)體讓我想起了nginx的string,他是這樣定義的:
typedef struct {
size_t len;
u_char *data;
} ngx_str_t;
golang里邊 string的概念其實(shí)不是以前遇到\0結(jié)尾的概念了,他其實(shí)就是一塊連續(xù)的內(nèi)存,首地址+長度,上面那樣賦值,如果p里邊有\(zhòng)0,他不會(huì)做處理這個(gè)時(shí)候,如果再對(duì)這個(gè)string做其他處理就可能出問題了,比如strconv.Atoi轉(zhuǎn)成int就有錯(cuò)誤,解決辦法就是需要自己寫一個(gè)正規(guī)的轉(zhuǎn)換函數(shù):
func byteString(p []byte) string {
for i := 0; i len(p); i++ {
if p[i] == 0 {
return string(p[0:i])
}
}
return string(p)
}
這樣就不會(huì)出問題了
atoi (表示 alphanumeric to integer)是把字符串轉(zhuǎn)換成整型數(shù)的一個(gè)函數(shù)。
函數(shù)原型:int atoi(const char *nptr);
參數(shù) nptr為字符串指針
說明:
參數(shù)nptr字符串,如果第一個(gè)非空格字符存在,是數(shù)字或者正負(fù)號(hào)則開始做類型轉(zhuǎn)換,之后檢測到非數(shù)字(包括結(jié)束符 \0) 字符時(shí)停止轉(zhuǎn)換,返回整型數(shù)。否則,返回零。
包含在頭文件stdlib.h中
實(shí)例:
#include stdlib.h
#include stdio.h
int main(void)
{
int n;
char *str = "12345.67";
n = atoi(str);
printf("int=%d\n",n);
return0;
}
結(jié)果輸出:
int=12345
是的。
atoi函數(shù)在stdlib.h頭文件中聲明,它接受一個(gè)C風(fēng)格字符串(const char*)作為參數(shù),返回int,表示這個(gè)字符串所代表的十進(jìn)制數(shù)。解析過程如下:
函數(shù)首先忽略字符串開始的空白字符,直到遇到第一個(gè)非空白字符,然后讀入正/負(fù)號(hào)字符(可以沒有)以及后面跟著的數(shù)字字符,并將它們解釋為一個(gè)int類型的整數(shù)。
從這個(gè)解析過程可以看出atoi是可以解析負(fù)數(shù)的。
樣例(摘自cplusplus點(diǎn)抗 ):
#include?stdio.h??????/*?printf,?fgets?*/
#include?stdlib.h?????/*?atoi?*/
int?main?()
{
int?i;
char?buffer[256];
printf?("Enter?a?number:?");
fgets?(buffer,?256,?stdin);
i?=?atoi?(buffer);
printf?("The?value?entered?is?%d.?Its?double?is?%d.\n",i,i*2);
return?0;
}