程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C庫函數使用與總結之字符串處理函數,c庫函數字符串函數

C庫函數使用與總結之字符串處理函數,c庫函數字符串函數

編輯:關於C語言

C庫函數使用與總結之字符串處理函數,c庫函數字符串函數


 

1. memcpy(拷貝內存內容)

【頭文件】#include <string.h>

【函數原型】void *memcpy(void *dest, const void *src, size_t len);

【函數說明】拷貝src所指的內存內容前len個字節到dest所指的內存地址上。與strcpy()不同的是,memcpy()會完整復制len個字節,不會因為遇到字符串結束符'\0'而結束。

【返回值】返回指向dest的指針。

【補充說明】指針src和dest所指的內存區域不可重疊。//使用memmove可以用來處理重疊區域。

【自定義實現】

void *memcpy(void *dest, const void *src, size_t len)
{
    if(NULL == dest || NULL == src)
    {
       return NULL;    // (void *)一定要返回一個指針
    }

    char *tmpDest = dest;
    const char *tmpSrc = src;
    size_t i;

    for(i = 0; i < len; i++)
    {
        tmpDest[i] = tmpSrc[i];
    }

    return dest;
}

 

2. memmove(拷貝內存內容)

【頭文件】#include <string.h>

【函數原型】void * memmove(void *dest,const void *src,size_t n);

【函數說明】memmove()與 memcpy()一樣都是用來拷貝 src 所指的內存內容前 n 個字節到 dest 所指的地址上。不同的是,當 src 和 dest 所指的內存區域重疊時,memmove()仍然可以正確的處理,不過執行效率上會比使用 memcpy()略慢些。

【返回值】返回指向dest的指針。

【補充說明】指針src和dest所指的內存區域可重疊。

 

3. atoi(將字符串轉換為整型數)

【頭文件】#include <stdlib.h>

【函數原型】int atoi(const char *nptr);

【函數說明】atoi()會掃描參數nptr字符串,跳過前面的空格字符,直到遇上數字或正負符才開始做轉換,而再遇到非數字或字符串結束符時才結束轉換,並將結果返回。

【返回值】返回轉換後的整型數

【補充說明】與使用strtol(nptr, (char **)NULL, 10); 結果相同

【自定義實現】

int myAtoi(char *str) {
    int sign = 1, base = 0, i = 0;
    while (str[i] == ' ') { i++; }
    if (str[i] == '-' || str[i] == '+') {
        sign = 1 - 2 * (str[i++] == '-'); 
    }
    while (str[i] >= '0' && str[i] <= '9') {
        if (base > INT_MAX / 10 || (base == INT_MAX / 10 && str[i] - '0' > 7)) {
            if (sign == 1) return INT_MAX;
            else return INT_MIN;
        }
        base = 10 * base + (str[i++] - '0');
    }
    return base * sign;
}

 

4. strstr(在一字符串中查找指定的字符串)

【頭文件】#include <string.h>

【函數原型】char *strstr(const char *haystack,const char *needle);

【函數說明】strstr()會從字符串 haystack 中搜尋字符串 needle,並將第一次出現的地址返回。

【返回值】返回指定字符串第一次出現的地址,否則返回 0。

【自定義實現】

char *strstr(char *haystack, char *needle) 
{
    int i, j;
    for( i=0; i<strlen(haystack); i++ )
        for( j=0; j<strlen(needle); j++ )
            if ( haystack[i] != needle[j] )
                break;
    if(i>=strlen(haystack))
        return NULL;
    else
        return &haystack[i];
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved