C語(yǔ)言中一些將字符串轉(zhuǎn)換為數(shù)字的函數(shù)小結(jié)
C語(yǔ)言atoi()函數(shù):將字符串轉(zhuǎn)換成int(整數(shù))
頭文件:
#include <stdlib.h>
atoi() 函數(shù)用來(lái)將字符串轉(zhuǎn)換成整數(shù)(int),其原型為:
int atoi (const char * str);
【函數(shù)說(shuō)明】atoi() 函數(shù)會(huì)掃描參數(shù) str 字符串,跳過(guò)前面的空白字符(例如空格,tab縮進(jìn)等,可以通過(guò) isspace() 函數(shù)來(lái)檢測(cè)),直到遇上數(shù)字或正負(fù)符號(hào)才開(kāi)始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(shí)('\0')才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。
【返回值】返回轉(zhuǎn)換后的整型數(shù);如果 str 不能轉(zhuǎn)換成 int 或者 str 為空字符串,那么將返回 0。
范例:將字符串a(chǎn) 與字符串b 轉(zhuǎn)換成數(shù)字后相加。
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i;
char buffer[256];
printf ("Enter a number: ");
fgets (buffer, 256, stdin);
i = atoi (buffer);
printf ("The value entered is %d.", i);
system("pause");
return 0;
}
執(zhí)行結(jié)果:
Enter a number: 233cyuyan The value entered is 233.
C語(yǔ)言atof()函數(shù):將字符串轉(zhuǎn)換為double(雙精度浮點(diǎn)數(shù))
頭文件:
#include <stdlib.h>
atol() 函數(shù)的名字源于“ascii to long”,用來(lái)將字符串轉(zhuǎn)換成長(zhǎng)整型數(shù)(long),其原型為:
long atol(const char * str);
【函數(shù)說(shuō)明】atol() 會(huì)掃描參數(shù) str 字符串,跳過(guò)前面的空白字符(例如空格,tab縮進(jìn)等,可以通過(guò) isspace() 函數(shù)來(lái)檢測(cè)),直到遇上數(shù)字或正負(fù)符號(hào)才開(kāi)始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(shí)('\0')才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。
【返回值】返回轉(zhuǎn)換后的長(zhǎng)整型數(shù)(long);如果 str 不能轉(zhuǎn)換成 long 或者 str 為空字符串,那么將返回 0。
示例:將輸入的字符串轉(zhuǎn)換成long。
#include <stdio.h>
#include <stdlib.h>
int main ()
{
long int li;
char buffer[256];
printf ("Enter a long number: ");
fgets(buffer, 256, stdin);
li = atol(buffer);
printf ("The value entered is %ld.\n", li);
system("pause");
return 0;
}
執(zhí)行結(jié)果:
Enter a long number: 1200cyuyan The value entered is 1200.
C語(yǔ)言atof()函數(shù):將字符串轉(zhuǎn)換為double(雙精度浮點(diǎn)數(shù))
頭文件:
#include <stdlib.h>
函數(shù) atof() 用于將字符串轉(zhuǎn)換為雙精度浮點(diǎn)數(shù)(double),其原型為:
double atof (const char* str);
atof() 的名字來(lái)源于 ascii to floating point numbers 的縮寫(xiě),它會(huì)掃描參數(shù)str字符串,跳過(guò)前面的空白字符(例如空格,tab縮進(jìn)等,可以通過(guò) isspace() 函數(shù)來(lái)檢測(cè)),直到遇上數(shù)字或正負(fù)符號(hào)才開(kāi)始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(shí)('\0')才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。參數(shù)str 字符串可包含正負(fù)號(hào)、小數(shù)點(diǎn)或E(e)來(lái)表示指數(shù)部分,如123. 456 或123e-2。
【返回值】返回轉(zhuǎn)換后的浮點(diǎn)數(shù);如果字符串 str 不能被轉(zhuǎn)換為 double,那么返回 0.0。
溫馨提示:ANSI C 規(guī)范定義了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6個(gè)可以將字符串轉(zhuǎn)換為數(shù)字的函數(shù),大家可以對(duì)比學(xué)習(xí);使用 atof() 與使用 strtod(str, NULL) 結(jié)果相同。另外在 C99 / C++11 規(guī)范中又新增了5個(gè)函數(shù),分別是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介紹,請(qǐng)大家自行學(xué)習(xí)。
范例:
#include <stdio.h>
#include <stdlib.h>
int main(){
char *a = "-100.23",
*b = "200e-2",
*c = "341",
*d = "100.34cyuyan",
*e = "cyuyan";
printf("a = %.2f\n", atof(a));
printf("b = %.2f\n", atof(b));
printf("c = %.2f\n", atof(c));
printf("d = %.2f\n", atof(d));
printf("e = %.2f\n", atof(e));
system("pause");
return 0;
}
執(zhí)行結(jié)果:
a = -100.23 b = 2.00 c = 341.00 d = 100.34 e = 0.00
相關(guān)文章
C++實(shí)現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項(xiàng))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項(xiàng)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
深入解析設(shè)計(jì)模式中的適配器模式在C++中的運(yùn)用
這篇文章主要介紹了設(shè)計(jì)模式中的適配器模式在C++中的運(yùn)用,通常適配器模式可以細(xì)分為類(lèi)適配器和對(duì)象適配器兩種情況,需要的朋友可以參考下2016-03-03
詳解C語(yǔ)言中的ttyname()函數(shù)和isatty()函數(shù)的用法
這篇文章主要介紹了C語(yǔ)言中的ttyname()函數(shù)和isatty()函數(shù)的用法,是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
Qt利用tablewidget模擬手指實(shí)現(xiàn)滑動(dòng)
這篇文章主要為大家詳細(xì)介紹了Qt如何利用tablewidget模擬手指實(shí)現(xiàn)滑動(dòng)效果,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定的幫助,需要的可以參考一下2023-01-01
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易掃雷游戲
Matlab實(shí)現(xiàn)黑洞優(yōu)化算法的示例代碼

