<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. C語言

    c語言中單引號和雙引號的區別

    時間:2025-02-13 21:45:47 C語言 我要投稿
    • 相關推薦

    c語言中單引號和雙引號的區別

      單引號和雙引號都可以作為字符串的開始符和關閉符,并且只能同一種單或者雙引號來定義開始和結束。以下是小編分享給大家的c語言中單引號和雙引號的區別,歡迎閱讀!

      問題:

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

      解決辦法:

      1. 解決思路:

      IP地址最長為12字符+3句點=15字符,一般性表示為192.168.111.111;

      可以從第一個字符開始解析,當不是'.'時,將所有字符保存下來,然后把所有保存下來的字符轉換為16進制就可以了;

      2. 程序如下:

      復制代碼 代碼如下:

      typedef struct {

      char addr_ipv4[4];

      } IPADDR_IPV4;

      #include

      // 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:%sn", ch_ip);

      for (k=0; k

      if (str[k] != '.') {

      // Dprintf("k-inx: %dn", k-inx);

      memcpy(&tmpBuf[k-inx], &str[k], 1);

      }

      else {

      inx = k + 1;

      // Dprintf("inx: %d, tmpBuf: %sn", inx, tmpBuf);

      ipv4.addr_ipv4[j++] = strtol(tmpBuf, NULL, 10);

      memset(tmpBuf, 0, sizeof(tmpBuf));

      continue;

      }

      // Dprintf("tmpBuf: %sn", tmpBuf);

      ipv4.addr_ipv4[j] = strtol(tmpBuf, NULL, 10);

      }

      // Dprintf("ipv4 is: ");

      // for (k=0; k

      // Dprintf("%d", ipv4.addr_ipv4[k]);

      // }

      // Dprintf("n");

      return ipv4;

      }

      應用如下:

      復制代碼 代碼如下:

      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. 注意事項:

      原來進行字符比較的時候,用的是if (str[k] != ".")而不是if (str[k] != '.'),結果一直不對。

      后來反復 查找原因,才知道單引號''和雙引號“”的區別:

      (1)含義不同。

      單引號引起的一個字符代表一個整數,整數值對應于該字符在ASCII字符集中的序列值;

      雙引號引起的都是字符串,哪怕只有一個字符也是字符串,雙引號引起的一個字符代表一個指向無名數組起始字符的指針;

      比如:'.'代表十進制46,十六進制0x2E;

      而"."代表指向起始字符為"."的某數組的指針;

      (2)大小不同。

      單引號引起的一個字符大小就是一個字節;

      雙引號引起的一個字符大小是兩個字節,因為雙引號引起的字符串會在字符串的末尾添加一個0x00作為字符串的結束標識。

      拓展內容:C語言基本算法

      1.交換(兩量交換借助第三者)

      例1、任意讀入兩個整數,將二者的值交換后輸出。

      main()

      {int a,b,t;

      scanf("%d%d",&a,&b);

      printf("%d,%d ",a,b);

      t=a; a=b; b=t;

      printf("%d,%d ",a,b);}

      【解析】程序中加粗部分為算法的核心,如同交換兩個杯子里的飲料,必須借助第三個空杯子。

      假設輸入的值分別為3、7,則第一行輸出為3,7;第二行輸出為7,3。

      其中t為中間變量,起到“空杯子”的作用。

      注意:三句賦值語句賦值號左右的各量之間的關系!

      【應用】

      例2、任意讀入三個整數,然后按從小到大的順序輸出。

      main()

      {int a,b,c,t;

      scanf("%d%d%d",&a,&b,&c);

      if(a>b){ t=a; a=b; b=t; }

      if(a>c){ t=a; a=c; c=t; }

      if(b>c) { t=b; b=c; c=t; }

      printf("%d,%d,%d ",a,b,c);}

      2.累加

      累加算法的要領是形如“s=s+A”的累加式,此式必須出現在循環中才能被反復執行,從而實現累加功能。“A”通常是有規律變化的表達式,s在進入循環前必須獲得合適的初值,通常為0。

      例1、求1+2+3+……+100的和。

      main()

      {int i,s;

      s=0; i=1;

      while(i<=100)

      {s=s+i;

      i=i+1;

      }

      printf("1+2+3+...+100=%d ",s);}

      【解析】程序中加粗部分為累加式的典型形式,賦值號左右都出現的變量稱為累加器,其中“i = i + 1”為特殊的累加式,每次累加的值為1,這樣的累加器又稱為計數器。

      3.累乘

      累乘算法的要領是形如“s=s*A”的累乘式,此式必須出現在循環中才能被反復執行,從而實現累乘功能。“A”通常是有規律變化的表達式,s在進入循環前必須獲得合適的初值,通常為1。

      例1、求10!

      [分析]10!=1×2×3×……×10

      main()

      {int i; long c;

      c=1; i=1;

      while(i<=10)

      {c=c*i;

      i=i+1;

      }

      printf("1*2*3*...*10=%ld ",c);}

    【c語言中單引號和雙引號的區別】相關文章:

    C語言單引號和雙引號的區別05-04

    PHP中單引號與雙引號的區別02-10

    C語言中static和extern的區別02-27

    C語言中char*和char[]用法區別03-17

    c語言中bit和sbit的區別哪些04-21

    C語言中堆和棧的區別有哪些08-12

    C語言中Sizeof與Strlen的區別與聯系04-07

    C語言中指針與數組的區別03-11

    在C語言中函數調用方式的區別01-07

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人