91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中atoi函數模擬如何實現

發布時間:2022-10-17 10:35:54 來源:億速云 閱讀:108 作者:iii 欄目:開發技術

這篇文章主要介紹“C語言中atoi函數模擬如何實現”,在日常操作中,相信很多人在C語言中atoi函數模擬如何實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C語言中atoi函數模擬如何實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、atoi函數是什么?

int atoi ( const char * str );

功能:將字符串轉換為整數。

解析C字符串str,將其內容解釋為一個整數,該整數作為int值返回。

該函數首先丟棄盡可能多的空白字符,直到找到第一個非空白字符。然后,從這個字符開始,取一個可選的初始加號或減號,后面跟著盡可能多的數字,并將它們解釋為一個數值。 例:" -123456" 轉換為 -123456

字符串可以在構成整數的字符之后包含其他字符,這些字符將被忽略,并且對該函數的行為沒有影響。例:" 123abc456" 轉換為 123,雖然最終的輸出結果是一個整數,但這屬于非法轉換

如果str中的第一個非空白字符序列不是有效的整數,或者由于str為空或只包含空白字符而不存在這樣的序列,則不執行轉換。例:“abc” " abc" “” 為非法轉換,最終會輸出整數0。

字符串整數合法性
" 123456"123456合法
“-123456”-123456合法
“123abc456”123非法
“abc”0非法
“”0非法
“2222222222”任意值非法

注:當轉換的值超出int可表示值的范圍時會發生什么,沒有標準規范。

例:在VS2013編譯環境下輸出的數值

C語言中atoi函數模擬如何實現

二、atoi函數模擬實現

#include <stdio.h>
#include <limits.h>
#include <ctype.h>

//通過枚舉設置兩種狀態,分別代表字符串轉換的合法性
enum Status
{
	VALID,  //合法
	INVALID  //非法
};

enum Status status = INVALID; //定義全局變量 status 為 INVALID,若轉換合法,則將 status 變為 VALID,若非法則不變

int my_atoi(const char* str)
{
	if (str == NULL)  //字符串為空
	{
		return 0;
	}
	if (*str == '\0')  //空白字符
	{
		return 0;
	}
	while (isspace(*str))  //字符串前面有多余的空格,則一直往后移尋找符號或數字
	{
		str++;
	}
	int flag = 0;  //flag 標志數字的正負
	if (*str == '+')
	{
		flag = 1;
		str++;
	}
	else if (*str == '-')
	{
		flag = -1;
		str++;
	}
	long long ret = 0;
	while (isdigit(*str))
	{
		ret = ret * 10 + flag*(*str - '0');
		if (ret<INT_MIN || ret>INT_MAX)  //判斷轉換后的數字是否越界
		{
			return 0;
		}
		str++;
	}
	if (*str == '\0')  //若字符串遍歷完就走這一步,也就意味著該字符串的轉換為合法的
	{
		status = VALID;
		return (int)ret;
	}
	else  //非法轉換
	{
		return (int)ret;
	}
}

int main()
{
	//int ret = my_atoi("-123");
	int ret = my_atoi("  -2222222222");
	if (status == VALID)
	{
		printf("合法的轉換:%d\n", ret);
	}
	else
		printf("轉換不合法!返回值為:%d\n",ret);
	return 0;
}

到此,關于“C語言中atoi函數模擬如何實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石首市| 上林县| 聂荣县| 巴彦淖尔市| 日照市| 连云港市| 辽源市| 岑巩县| 南川市| 登封市| 江华| 罗平县| 汽车| 于都县| 通渭县| 舒兰市| 颍上县| 丹棱县| 西青区| 扎兰屯市| 上虞市| 犍为县| 喜德县| 绿春县| 惠来县| 陆河县| 古田县| 锡林浩特市| 将乐县| 安阳县| 迁安市| 美姑县| 竹溪县| 武川县| 比如县| 呼玛县| 碌曲县| 公主岭市| 彭山县| 鄂托克前旗| 蒲城县|