posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          幾個C的字符串操作代碼

          Posted on 2007-07-08 21:05 ZelluX 閱讀(499) 評論(2)  編輯  收藏 所屬分類: C/C++
          很簡短,有點trick的感覺,就像小學里寫的那些(n-1) mod x + 1。進了大學后很少寫類似風格的代碼了,這些用在java項目中就要因為可讀性被bs了。
          1. 計算串長度 strlen(a)
          for (i = 0; a[i] != 0; i++); return i;

          2. 復制 strcpy(a, b)
          for (i = 0; (a[i] = b[i]) != 0; i++);

          3. 比較 strcmp(a, b)
          for (i = 0; a[i] == b[i]; i++)
              if (a[i] == 0) return 0;
          return a[i] - b[i];
          注意適用于不同長度的字符串

          指針版本
          1. strlen(a)
          b = a; while (*b++); return b - a - 1;

          2. strcpy(a, b)
          while (*a++ = *b++);

          3. strcmp(a, b)
          while (*a++ = *b++)
              if (*(a-1) == 0) return 0;
          return *(a-1) - *(b-1);




          評論

          # re: 幾個C的字符串操作代碼  回復  更多評論   

          2007-07-09 16:37 by BZBJ
          為什么我覺得應該是 "\0" 而不是 "0"

          # re: 幾個C的字符串操作代碼  回復  更多評論   

          2007-07-09 20:02 by ZelluX
          是'\0'吧?
          '\0'和0不是一樣的嗎?
          主站蜘蛛池模板: 大姚县| 南宫市| 进贤县| 崇礼县| 抚松县| 和静县| 巴塘县| 博野县| 阜阳市| 淮安市| 临猗县| 白山市| 新巴尔虎右旗| 丰台区| 改则县| 芦溪县| 贵州省| 康平县| 色达县| 循化| 绵竹市| 巴林左旗| 托克逊县| 罗田县| 长岛县| 阜新| 汝阳县| 广汉市| 西安市| 玛多县| 鹿泉市| 土默特左旗| 凤阳县| 嵊州市| 马山县| 武鸣县| 祁门县| 西丰县| 清原| 炎陵县| 桦川县|