最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用C語言實現將格式化數據和字符串相互轉換

 更新時間:2023年03月29日 15:42:48   作者:努力學習游泳的魚  
這篇文章主要為大家詳細介紹了2個函數,分別是sprintf和sscanf,可以用來實現將格式化數據和字符串相互轉換,感興趣的小伙伴可以跟隨小編一起學習一下

今天重點介紹2個函數,分別是sprintf和sscanf,用來將格式化數據和字符串相互轉換。它們的作用分別是:

1.sprintf函數用于將格式化數據轉換成字符串。

3.sscanf函數用于將字符串轉換成格式化數據。

接下來是第一個大問題:我怎么記憶呢?這好容易記反呀!

別擔心,我來教你。你也許不知道sprintf和sscanf,但你肯定知道printf和scanf。

printf負責把格式化數據輸出到屏幕上。sprintf和printf類似,只不過不是輸出到屏幕上,而是輸出到一個字符串中。把格式化數據輸出到字符串中,不就是把格式化數據轉換成字符串嘛。

scanf負責從鍵盤中輸入格式化數據。同理,sscanf和scanf類似,只不過不是從鍵盤中輸入數據,而是從一個字符串中輸入數據,也就是把字符串轉換成格式化數據。

接下來講解如何使用這兩個函數。

1.sprintf

假設有這么一個結構體:

struct S
{
    int i;
    double d;
    char arr[20];
};

我們創(chuàng)建了一個結構體變量:

struct S s = {10, 3.14, "abcdef"};

此時,內存中就有了一份格式化數據。我們如何把這個格式化數據轉換成字符串呢?

首先得有字符串存儲的位置,C語言用字符數組來存儲字符串:

char str[100] = {0};

接下來我們要干的事情,就是把s結構體中的數據轉換成字符串,存儲到str中,這就需要使用sprintf。

sprintf的聲明如下:

int sprintf ( char * str, const char * format, ... );

其中str就是轉換出來的字符串要存儲到哪(一個char*的指針),后面的參數就跟printf是一樣的了。在上面的例子中,應該這么使用:

sprintf(str, "%d %lf %s\n", s.i, s.d, s.arr);

如果你還是不理解,可以這么想:下面的代碼是什么意思?

printf("%d %lf %s\n", s.i, s.d, s.arr);

就是把s中的內容打印到屏幕上嘛。那如果不是打印到屏幕上,而是“打印”到字符串中,就是sprintf的作用了。

如果你不相信,可以把str中的內容打印出來:

printf("%s\n", str);

輸出結果如下:

這說明轉換成功了。

2.sscanf

假設我們已經有一個字符串了:

char str[] = "10 3.140000 abcdef\n";

其實這個字符串和上面的例子中轉換出來的字符串是一樣的。

然后創(chuàng)建一個結構體:

struct S s = {0};

我們如何把這個字符串重新轉換成結構體s呢?這就需要用到sscanf函數,聲明如下:

int sscanf ( const char * s, const char * format, ...);

第一個參數就是你要轉換的字符串,后面的參數和scanf一樣。

這次,我換一種講述方式,方便大家更好的理解。首先,假設我要你使用scanf函數來輸入數據到結構體s中,你會怎么寫?

scanf("%d %lf %s", &s.i, &s.d, s.arr);

注意,數組名本身就是地址,所以不需要取地址(&)。

scanf函數可以從鍵盤輸入數據到結構體中去,那如果不從鍵盤中輸入,而是從字符串輸入呢?只需要使用sscanf,所有參數前面加上個str就行了。

sscanf(str, "%d %lf %s", &s.i, &s.d, &s.arr);

大功告成。你還可以把結構體中的數據打印出來:

printf("%d %lf %s\n", s.i, s.d, s.arr);

輸出結果和上面講解sprintf函數時舉的例子的輸出是一樣的。

總結

1.sprintf和sscanf負責將字符串和格式化數據相互轉換。

2.sprintf相當于,本來是printf把格式化數據輸出到屏幕上,現在是輸出到一個字符串中,也就是把格式化數據轉換成字符串。

3.sscanf相當于,本來是scanf從鍵盤中輸入格式化數據,現在是從一個字符串中輸入,也就是把字符串轉換成格式化數據。

4.sprintf和sscanf的參數,與printf和scanf的參數的區(qū)別是,最前面多了個char*類型的指針,也就是指向字符串的指針。

到此這篇關于利用C語言實現將格式化數據和字符串相互轉換的文章就介紹到這了,更多相關C語言格式化數據與字符串相互轉換內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++ 中

    C++ 中"emplace_back" 與 "push_back" 的區(qū)別

    這篇文章主要介紹了C++ 中"emplace_back" 與 "push_back" 的區(qū)別的相關資料,需要的朋友可以參考下
    2017-04-04
  • 利用C語言實現單詞文本計數

    利用C語言實現單詞文本計數

    這篇文章主要為大家詳細介紹了如何編寫一個C語言程序,用于統(tǒng)計一個文本文件中每個單詞出現的次數,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11
  • C++繼承詳細介紹

    C++繼承詳細介紹

    我們都知道面向對象語言的三大特點是:**封裝,繼承,多態(tài)。**之前在類和對象部分,我們提到了C++中的封裝,那么今天呢,我們來學習一下C++中的繼承
    2022-10-10
  • C語言實現超市管理系統(tǒng)

    C語言實現超市管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現超市管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 基于C語言實現井字棋游戲

    基于C語言實現井字棋游戲

    這篇文章主要為大家詳細介紹了基于C語言實現井字棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++構造函數+復制構造函數+重載等號運算符調用

    C++構造函數+復制構造函數+重載等號運算符調用

    這篇文章主要介紹了C++構造函數+復制構造函數+重載等號運算符調用,文章敘述詳細,具有一定的的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • C語言中單鏈表的基本操作指南(增刪改查)

    C語言中單鏈表的基本操作指南(增刪改查)

    鏈表跟數組不同的是非連續(xù)存儲結構,也就是說實現鏈表需要一個指針,每用完一個節(jié)點指針指向下一個節(jié)點,直至表尾,下面這篇文章主要給大家介紹了關于C語言中單鏈表的基本操作之增刪改查的相關資料,需要的朋友可以參考下
    2021-09-09
  • C語言數據結構堆的基本操作實現

    C語言數據結構堆的基本操作實現

    這篇文章主要為大家介紹了C語言數據結構堆的基本操作實現示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-11-11
  • 基于C語言的庫封裝發(fā)布技術詳解

    基于C語言的庫封裝發(fā)布技術詳解

    在編程的過程中,使用已經封裝好的庫函數是十分方便的,也是十分高效的,這篇文章主要給大家介紹了關于C語言庫的封裝和使用的相關資料,需要的朋友可以參考下
    2021-08-08
  • C++堆棧類模板實現代碼

    C++堆棧類模板實現代碼

    這篇文章主要為大家詳細介紹了C++堆棧類模板的實現代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論

达尔| 勐海县| 鄯善县| 西乡县| 青川县| 平遥县| 营山县| 布尔津县| 英吉沙县| 天气| 南涧| 兴和县| 巴彦淖尔市| 鸡东县| 富阳市| 岢岚县| 西城区| 乌鲁木齐市| 大同县| 永昌县| 苗栗县| 万州区| 石泉县| 陕西省| 柘荣县| 博野县| 荔波县| 长宁县| 清水河县| 奇台县| 阿图什市| 卢氏县| 仙游县| 大化| 西安市| 克什克腾旗| 庄浪县| 始兴县| 化德县| 濮阳县| 临泽县|