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

          幾個C的字符串操作代碼

          Posted on 2007-07-08 21:05 ZelluX 閱讀(502) 評論(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不是一樣的嗎?
          主站蜘蛛池模板: 湘乡市| 黄平县| 六枝特区| 岚皋县| 林周县| 晋中市| 桑日县| 上饶县| 大关县| 盐城市| 泰和县| 蓬莱市| 鹿邑县| 隆昌县| 得荣县| 北流市| 封开县| 甘洛县| 河池市| 革吉县| 元谋县| 深圳市| 休宁县| 广宗县| 白河县| 鲁山县| 黑龙江省| 格尔木市| 苏尼特左旗| 杭锦旗| 乐亭县| 琼海市| 张家港市| 望谟县| 承德市| 商城县| 德格县| 桑日县| 台东市| 屏东市| 津南区|