C語言的故事:自己沒有想象中那麼狠

來源:互聯網
上載者:User
     今天準備開始看minigui的代碼了,事先想把C語言複習一遍,原來自我感覺非常良好的C語言,今天看了一天才發現自己基礎是如此的差,唉!!!!看來還需努力啊!!!把今天的體會記錄一下也好!
     寫了四個字串操作的函數,不用庫函數寫的,不怎麼好,等待以後再改進吧!!
      求字串長度函數:
      long StrLength(const char* srcStr)
      {
           _ASSERT(srcStr != NULL);
           long len = 0;
           while (*(srcStr+(len++)) != '\0')
                  ;
           return len-1;
       }
     
       字串拷貝函數:
       char* StrCopy(char* destStr, const char* srcStr)
        {
             _ASSERT(destStr != NULL && srcStr != NULL);
             char* tmp = destStr;
             while ((*destStr++ = *srcStr++) != '\0')
                      ;
             return tmp;
         }

       字串比較函數:
        int StrCmp(const char* srcStr, const char* cmpStr)
        {
             _ASSERT(cmpStr != NULL && srcStr != NULL);
             enum emSta = { LOWER = -1, EQUAL = 0; LARGER = 1;};
             int sta = EQUAL;
 
             while (*srcStr++ != '\0' || *cmpStr++ != '\0')
             {
                      if (*srcStr != *cmpStr)
                      {
                               sta = (*srcStr > *cmpStr) ? LARGER :  LOWER;
                                       break;
                      }
             }
        
            if (EQUAL == sta)
            {
                     if ( *srcStr != '\0')
                              sta = LARGER;
                     else if (*cmpStr != '\0')
                              sta = LOWER;
            }
        
            return sta;
        }

        尋找子串函數:
        long SubStrPos(const char* srcStr, const char* subStr)
        {
                 _ASSERT(subStr != NULL && srcStr != NULL);
                 long sLen = StrLength(srcStr);
                 long subLen = StrLength(subStr);
                 int pos = 0;
 
                 if (subLen > sLen || 0 == subLen)
                         return -1;
 
                 while (pos+subLen <= sLen)
                 {
                          if (srcStr[pos] == subStr[0])
                          {
                                   int i;
                                   for (i=1; i<subLen; i++)
                                   {
                                            if (srcStr[pos+i] != subStr[i])
                                                    break;
                                   }
   
                                   if (i == subLen)
                                          return pos;
                          }
                          ++pos;
                 }
 
                 return -1;
        }
明天在看看資料結構的知識,現在什麼演算法都忘光了,這還是程式員嗎?@_@

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.