C零基礎視頻-28-C標準庫中常見的字符串操作函數


視頻地址:https://www.bilibili.com/video/av73225646

字符串的特殊性

字符串不是基本數據類型。因此,像操作基本數據類型那樣操作,可能會失敗:

#include <stdio.h>

int main(int argc, char* argv[])
{
    char* szHello = "Hello";
    char chAry[] = "Hello";
    printf("%s, %s\r\n", szHello, chAry);
    if (szHello == chAry)
    {
        printf("兩者相等\r\n");
    }
    else
    {
        printf("兩者不相等\r\n");
    }
    return 0;
}

以上顯示不相等,是因爲字符串不是基本數據類型,直接比較szHello與chAry,其實是在比較地址

#include <stdio.h>

int main(int argc, char* argv[])
{
    char* szHello = "Hello";
    char chAry[] = "Hello";
    printf("%s, %s\r\n", szHello, chAry);
    printf("%08X, %08X\r\n", szHello, chAry);
    return 0;
}

思考下,編程角度如何去比較兩個字符串是否相等呢?
爲了便利,C庫函數提供了一系列函數,用於操作字符串。

字符串比較

int strcmp( char *string1, char *string2 );
  • 當兩個字符串相等時,返回0
  • 當兩個字符串不想等時,返回非0

獲取字符串長度

unsigned strlen(char *string );
int main(int argc, char* argv[])
{
    char* szHello = "Helloworld";
    printf("%d\r\n", strlen(szHello));
    return 0;
}

複製字符串

char *strcpy( char *strDestination, char *strSource );
int main(int argc, char* argv[])
{
    char* szHello = "Helloworld";
    char szDest[100] = { 0 };
    printf("複製前:%s\r\n", szDest);

    strcpy(szDest, szHello);

    printf("複製後:%s\r\n", szDest);
    return 0;
}

連接字符串

char *strcat( char *strDestination, char *strSource );
int main(int argc, char* argv[])
{
    char szDest[100] = "Hello";
    printf("連接前:%s\r\n", szDest);
    strcat(szDest, ", World");
    printf("連接後:%s\r\n", szDest);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章