天天看點

BAT技術面試最喜歡考的兩個程式設計題

關于字元串的程式設計題真的是太常見了,而且是非常吸引BAT等公司IT技術面試官。這類題目一般都是不難的,核心代碼都是非常簡單,但是需要注意的細節是太多了,而這也正是考察了面試者的技術功底。關于字元串的考題,常見的有strncpy, strncat等等。

  • strncpy

代碼來自Linux Manual手冊 (在linux終端輸入 man strncpy 就可以看到了)

char *
           strncpy(char *dest, const char *src, size_t n)
           {
               size_t i;

               for (i = ; i < n && src[i] != '\0'; i++)
                   dest[i] = src[i];
               for ( ; i < n; i++)
                   dest[i] = '\0';

               return dest;
           }
           
  • strncat

char*
           strncat(char *dest, const char *src, size_t n)
           {
               size_t dest_len = strlen(dest);
               size_t i;

               for (i =  ; i < n && src[i] != '\0' ; i++)
                   dest[dest_len + i] = src[i];
               dest[dest_len + i] = '\0';

               return dest;
           }
           
  • 分析:

    其實上面兩段代碼是很簡潔的,也很美觀。需要注意的點:

    1. 傳回值是

      char*

    2. src

      的修飾是

      const

      ,這點尤其重要,很考察個人的

      C++

      功底
    3. 添加

      '\0'

    4. size_t

      的使用
  • size_t

    的解釋:

    size_t

    是定義在

    cstddef

    檔案中,是一個與機器相關的

    unsigned

    類型。32系統中是

    unsigned int

    ,64位系統中則是

    long unsigned int

繼續閱讀