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不是一樣的嗎?
          主站蜘蛛池模板: 乌兰察布市| 垫江县| 荆州市| 浦城县| 清丰县| 乌兰浩特市| 玉龙| 塔城市| 桦甸市| 五莲县| 宾阳县| 上杭县| 绥化市| 祁门县| 抚宁县| 镇原县| 淄博市| 武汉市| 苏尼特右旗| 永春县| 大厂| 贵港市| 北宁市| 合作市| 梅河口市| 麻阳| 资溪县| 安阳县| 甘谷县| 宜兴市| 邛崃市| 桓仁| 台南市| 巫溪县| 双流县| 陆良县| 镇远县| 巴东县| 商城县| 东至县| 山东省|