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

c語言中單引號和雙引號的區(qū)別(順利解決從字符串中提取IP地址的困惑)

 更新時(shí)間:2013年07月25日 09:42:05   作者:  
c語言中的單引號和雙引號可是有很大區(qū)別的,使用之前一定要了解他們之間到底有什么不同,下面小編就給大家詳細(xì)的介紹一下吧,對此還不是很了解的朋友可以過來參考下

問題:
從c++文件中將std:string轉(zhuǎn)換為char*后,返回包含IP地址的char*,需要將該字符串char*中的IP地址提取出來;

解決辦法:
1. 解決思路:
IP地址最長為12字符+3句點(diǎn)=15字符,一般性表示為192.168.111.111;
可以從第一個(gè)字符開始解析,當(dāng)不是'.'時(shí),將所有字符保存下來,然后把所有保存下來的字符轉(zhuǎn)換為16進(jìn)制就可以了;

2. 程序如下:

復(fù)制代碼 代碼如下:

typedef struct {
    char addr_ipv4[4];
} IPADDR_IPV4;
#include <stdlib.h>
// Function: To extract HEX value of IP address from string expression.
IPADDR_IPV4 parse_IPString(const char *str, u8 strlen) {
 IPADDR_IPV4 ipv4;
 char tmpBuf[4] = {0};
 u8 k;
 u8 inx = 0;
 u8 j = 0;
 // Dprintf("The ch_ip is:%s\n", ch_ip);
 for (k=0; k<strlen; k++) {
  if (str[k] != '.') {
   // Dprintf("k-inx: %d\n", k-inx);
   memcpy(&tmpBuf[k-inx], &str[k], 1);
  }
  else {
   inx = k + 1;
   // Dprintf("inx: %d, tmpBuf: %s\n", inx, tmpBuf);
   ipv4.addr_ipv4[j++] = strtol(tmpBuf, NULL, 10);
   memset(tmpBuf, 0, sizeof(tmpBuf));
   continue;
  }
  // Dprintf("tmpBuf: %s\n", tmpBuf);
  ipv4.addr_ipv4[j] = strtol(tmpBuf, NULL, 10);
 }
 // Dprintf("ipv4 is: ");
 // for (k=0; k<sizeof(ipv4.addr_ipv4); k++) {
 //  Dprintf("%d", ipv4.addr_ipv4[k]);
 // }
 // Dprintf("\n");
 return ipv4;
}

應(yīng)用如下:
復(fù)制代碼 代碼如下:

   char* ch_ip = NULL;
    IPADDR_IPV4 ipv4Addr;
    ch_ip = (char*)malloc(16);
    memset(ch_ip, 0, 16);

    // parse IP address
    ch_ip = getIPAddr();

    // convert IP address from string to HEX expression
    ipv4Addr = parse_IPString(ch_ip, strlen(ch_ip));

3. 注意事項(xiàng):
原來進(jìn)行字符比較的時(shí)候,用的是if (str[k] != ".")而不是if (str[k] != '.'),結(jié)果一直不對。
后來反復(fù) 查找原因,才知道單引號''和雙引號“”的區(qū)別:

(1)。含義不同。
單引號引起的一個(gè)字符代表一個(gè)整數(shù),整數(shù)值對應(yīng)于該字符在ASCII字符集中的序列值;
雙引號引起的都是字符串,哪怕只有一個(gè)字符也是字符串,雙引號引起的一個(gè)字符代表一個(gè)指向無名數(shù)組起始字符的指針;
比如:'.'代表十進(jìn)制46,十六進(jìn)制0x2E;
而"."代表指向起始字符為"."的某數(shù)組的指針;

(2)。大小不同。
單引號引起的一個(gè)字符大小就是一個(gè)字節(jié);
雙引號引起的一個(gè)字符大小是兩個(gè)字節(jié),因?yàn)殡p引號引起的字符串會在字符串的末尾添加一個(gè)0x00作為字符串的結(jié)束標(biāo)識。

在本人的程序中正確取到了IP地址。
問題解決。

相關(guān)文章

  • C++實(shí)現(xiàn)LeetCode(49.群組錯(cuò)位詞)

    C++實(shí)現(xiàn)LeetCode(49.群組錯(cuò)位詞)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(49.群組錯(cuò)位詞),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Linux c中define的用法小結(jié)

    Linux c中define的用法小結(jié)

    學(xué)習(xí)了這么多年C語言,說實(shí)話對宏自以為了如指掌了,沒想到看內(nèi)核代碼的時(shí)候還是那么吃力,設(shè)備驅(qū)動代碼中有很多這樣或者那樣的宏定義,各種define,在學(xué)習(xí)的過程中將C語言中所出現(xiàn)的#define定義整理總結(jié)了一下,供大家借鑒和學(xué)習(xí)。
    2016-01-01
  • QT通過C++線程池運(yùn)行Lambda自定義函數(shù)流程詳解

    QT通過C++線程池運(yùn)行Lambda自定義函數(shù)流程詳解

    最近在接觸公司的一個(gè)QT桌面項(xiàng)目,其中里面有一個(gè)模塊是使用線程池去運(yùn)行自定義函數(shù)的,自己潛心研究那個(gè)線程池代碼一天,發(fā)現(xiàn)研究不透,看不懂,里面幾乎都是使用C++11的新特性進(jìn)行編寫
    2022-10-10
  • 基于C語言實(shí)現(xiàn)泛型編程詳解

    基于C語言實(shí)現(xiàn)泛型編程詳解

    對于C而言,想實(shí)現(xiàn)泛型編程并非易事,甚至可以說非常繁瑣,一大堆坑。最主要也沒有現(xiàn)成的輪子可用。本文就來詳細(xì)為大家講講C語言如何實(shí)現(xiàn)泛型編程詳解,需要的可以參考一下
    2022-07-07
  • C++如何切割String對象的方法

    C++如何切割String對象的方法

    C++相較于Java,Python 并沒有提供的字符串分割的函數(shù)split,因此需要自己進(jìn)行編寫,本文主要介紹了C++如何切割String對象的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Qt之實(shí)現(xiàn)圓形進(jìn)度條的示例代碼

    Qt之實(shí)現(xiàn)圓形進(jìn)度條的示例代碼

    在平時(shí)做頁面開發(fā)時(shí),有些時(shí)候會用到圓形進(jìn)度條,本文主要介紹了Qt之實(shí)現(xiàn)圓形進(jìn)度條的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • 如何用C++實(shí)現(xiàn)雙向循環(huán)鏈表

    如何用C++實(shí)現(xiàn)雙向循環(huán)鏈表

    本篇文章是對用C++實(shí)現(xiàn)雙向循環(huán)鏈表的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++虛函數(shù)表和虛析構(gòu)介紹

    C++虛函數(shù)表和虛析構(gòu)介紹

    這篇文章主要介紹了C++虛函數(shù)表和虛析構(gòu),虛函數(shù)表是C++實(shí)現(xiàn)多態(tài)的基礎(chǔ),多態(tài)是面向?qū)ο蟮娜筇匦灾唬旅嫖恼挛覀円黄饋砜纯丛敿?xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • C++實(shí)現(xiàn)迷宮游戲

    C++實(shí)現(xiàn)迷宮游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)迷宮游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語言關(guān)鍵字之a(chǎn)uto register詳解

    C語言關(guān)鍵字之a(chǎn)uto register詳解

    這篇文章主要為大家介紹了C語言關(guān)鍵字之a(chǎn)uto register,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評論

龙口市| 沁源县| 无为县| 军事| 万年县| 巧家县| 津市市| 新丰县| 天镇县| 彝良县| 蓝山县| 吉安县| 靖安县| 乐亭县| 元阳县| 曲靖市| 灌阳县| 彩票| 平远县| 彩票| 垦利县| 龙里县| 永泰县| 丹巴县| 宾川县| 抚宁县| 曲水县| 马边| 宁安市| 青神县| 南投市| 大田县| 英德市| 恩施市| 定结县| 安塞县| 启东市| 新干县| 河北省| 乐东| 久治县|