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不是一樣的嗎?
          主站蜘蛛池模板: 南皮县| 宝山区| 安龙县| 巴林左旗| 普洱| 东平县| 滕州市| 吴川市| 怀仁县| 舞阳县| 东兴市| 玉门市| 曲麻莱县| 宜君县| 团风县| 娄底市| 怀远县| 康保县| 旬邑县| 贵港市| 佳木斯市| 庄河市| 沾化县| 西藏| 浦城县| 斗六市| 吉安县| 巴中市| 离岛区| 左权县| 固始县| 剑阁县| 边坝县| 甘肃省| 麟游县| 和平区| 富平县| 罗定市| 神农架林区| 浪卡子县| 大关县|