亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一起來學習C語言的字符串轉換函數(shù)

 更新時間:2022年02月18日 15:47:28   作者:嵌入式@hxydj  
這篇文章主要為大家詳細介紹了C語言的字符串轉換函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

字符串轉整數(shù)

字符串轉換為整數(shù)的函數(shù)有兩個,他們的函數(shù)原型如下:

	int __cdecl atoi(const char *_Str);
  	long __cdecl atol(const char *_Str);

這兩個函數(shù)的用法都很簡單,atoi函數(shù)將字符串轉換為整數(shù)int型,atol函數(shù)將字符串轉換為長整形long int型。如果轉換無效,返回值都為0,下面通過一個簡單的例子看一下這兩個函數(shù)的用法。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
   int val;
   long val_l;
   char str[20];
   strcpy(str, "1234");
   val = atoi(str);
   printf("字符串值 = %s, 整型值 = %d\n", str, val);
   strcpy(str, "abc");
   val = atoi(str);
   printf("字符串值 = %s, 整型值 = %d\n", str, val);
   
   strcpy(str, "98993489");
   val_l = atol(str);
   printf("\n字符串值 = %s, 長整型值 = %ld\n", str, val_l);
   strcpy(str, "abc123");
   val_l = atol(str);
   printf("字符串值 = %s, 長整型值 = %ld\n", str, val_l);
   return 0;
}

給字符串賦不同的值,然后使用,atoi函數(shù)和atol函數(shù)對字符串進行轉換,輸出結果如下:

image.png

通過結果可以看出,只有當字符串有效時才能正確的轉換成整數(shù),否則轉換的結果就為0。

將字符串轉換為整數(shù)的函數(shù)還有以下兩個:

long __cdecl strtol(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix);
unsigned long __cdecl strtoul(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix);

strtol() 函數(shù)用來將字符串轉換為長整型數(shù)(long),它有三個參數(shù):

  • _Str 為要轉換的字符串,
  • _EndPtr 為第一個不能轉換的字符的指針,
  • _Radix 為字符串 str 所采用的進制。

trtol() 函數(shù)會將參數(shù)str字符串根據(jù)參數(shù)base來轉換成長整型數(shù)(long)。參數(shù)base范圍從236,或0。參數(shù)base代表str采用的進制方式,如base值為10則采用10進制,若base值為16則采用16進制等。

下面通過一個簡單的例子演示一下strtol() 函數(shù)的用法。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
	char str[30] = "123 -456 abc";
	char *pEnd;
	long ret1,ret2;
	ret1 = strtol(str, &pEnd, 10);
	ret2 = strtol(pEnd, &pEnd, 10);
	printf("數(shù)字1是: %ld\n", ret1);
	printf("數(shù)字2是: %ld\n", ret2);
	printf("字符串部分是: %s \n", pEnd);
	return 0;
}

定義一個字符串,然后使用strtol() 函數(shù)轉換字符串中的數(shù)字,輸出結果如下:

image.png

通過打印的結果可以看出,strtol() 函數(shù)將字符串中的兩個數(shù)字都成功換成為整數(shù)了。

strtol() 函數(shù)讀取字符串時,讀取到第一個空格是,由于空白字符不能轉換,所以函數(shù)返回,并將空白字符的存儲在 pEnd中,接下來從空白位置繼續(xù)轉換,將字符串“-456”轉換為數(shù)字之后,又遇到了空白字符,不能繼續(xù)轉換,函數(shù)退出,將第二個空白字符存儲在 pEnd中,最后將剩余的字符串換打印出來。

通過strtol() 函數(shù)就可以智能的將字符串的數(shù)字提取出來。

strtoul 函數(shù)用來將字符串轉換成無符號長整型數(shù)(unsigned long),它的用法和strtol() 函數(shù)基本一樣。

修改上面的代碼如下:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
	char str[30] = "123 456 abc";
	char *pEnd;
	long ret1,ret2;
	ret1 = strtoul(str, &pEnd, 10);
	ret2 = strtoul(pEnd, &pEnd, 10);
	printf("數(shù)字1是: %lu\n", ret1);
	printf("數(shù)字2是: %lu\n", ret2);
	printf("字符串部分是: %s \n", pEnd);
	return 0;
}

輸出結果為:

image.png

如果在字符串的數(shù)字前面添加上負號,轉換的結果就會出錯。

image.png

在使用strtol() 函數(shù)和strtoul 函數(shù)時要注意兩點:

  • 當 base 的值為 0 時,默認采用 10 進制轉換,但如果遇到'0x' / '0X'前置字符則會使用 16 進制轉換,遇到 '0' 前置字符則會使用 8 進制轉換。
  • 若 endptr 不為NULL,則會將遇到的不符合條件而終止的字符指針由 endptr 傳回;若 endptr 為 NULL,則表示該參數(shù)無效,或不使用該參數(shù)。

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!    

相關文章

  • OpenCV圖像幾何變換之透視變換

    OpenCV圖像幾何變換之透視變換

    這篇文章主要為大家詳細介紹了OpenCV圖像幾何變換之透視變換,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • vscode+platformIO開發(fā)stm32f4的實現(xiàn)

    vscode+platformIO開發(fā)stm32f4的實現(xiàn)

    這篇文章主要介紹了vscode+platformIO開發(fā)stm32f4的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • C++中ctemplate的使用

    C++中ctemplate的使用

    CTemplate是一種簡單但功能強大的模板引擎,廣泛用于各種HTML模板解析和生成,本文主要介紹了C++中ctemplate的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • C語言計算字符串最后一個單詞的長度

    C語言計算字符串最后一個單詞的長度

    大家好,本篇文章主要講的是C語言計算字符串最后一個單詞的長度,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++11中std::packaged_task的使用詳解

    C++11中std::packaged_task的使用詳解

    這篇文章主要介紹了C++11中std::packaged_task的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • C語言數(shù)據(jù)結構旋轉鏈表的實現(xiàn)

    C語言數(shù)據(jù)結構旋轉鏈表的實現(xiàn)

    這篇文章主要介紹了C語言數(shù)據(jù)結構旋轉鏈表的實現(xiàn)的相關資料,這里提供實例幫助大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • C++ 關于MFC List Control 控件的總結

    C++ 關于MFC List Control 控件的總結

    這篇文章主要介紹了C++ 關于MFC List Control 控件的總結的相關資料,十分的詳細,有需要的朋友可以參考下
    2015-06-06
  • 純C語言:檢索與周游廣度深度遍歷源碼分享

    純C語言:檢索與周游廣度深度遍歷源碼分享

    這篇文章主要介紹了檢索與周游廣度深度遍歷源碼,有需要的朋友可以參考一下
    2014-01-01
  • vscode配置C++環(huán)境的圖文教程

    vscode配置C++環(huán)境的圖文教程

    這篇文章主要介紹了vscode配置C++環(huán)境的教程圖文詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • C語言中的strlen()和sizeof()對比分析

    C語言中的strlen()和sizeof()對比分析

    這篇文章主要介紹了C語言中的strlen()和sizeof()區(qū)別對比,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03

最新評論