C語言中字符串常用操作總結

C語言是一種非常流行的編程語言,它支持各種數據類型,包括整數、浮點數、字符和字符串等。在 C語言中,字符串是一種特殊的數據類型,它由一系列字符組成,以\0字符結尾。本文將介紹 C語言中字符串的相關知識,包括字符串的定義、初始化、賦值、輸入輸出、比較、拼接、查找和替換等。

字符串的定義和初始化

在 C語言中,字符串可以使用字符數組來定義和表示。例如,我們可以使用以下語句來定義一個字符串變量:

char str[20];

上述語句定義瞭一個長度為 20 的字符數組 str,用來存儲字符串。我們可以使用以下語句來初始化字符串:

char str[] = "hello world";

上述語句定義瞭一個字符數組 str,並使用字符串字面量"hello world"來初始化該數組。在 C語言中,字符串字面量是由一系列字符組成的常量,以\0字符結尾。例如,字符串"hello world"由 11 個字符組成,其中包括 10 個可見字符和 1 個\0字符。

字符串的賦值

在 C語言中,我們可以使用 strcpy 函數來將一個字符串賦值給另一個字符串。strcpy 函數的原型如下:

char *strcpy(char *dest, const char *src);

其中,dest 是目標字符串,src 是要復制的字符串。strcpy 函數將 src 字符串復制到 dest 字符串中,並返回 dest 字符串的地址。例如:

char str1[20];
char str2[] = "hello world";
strcpy(str1, str2);
printf("復制後的字符串為:%s\n", str1);

在以上代碼中,我們首先定義瞭一個空的字符數組 str1 和一個字符串"hello world"。接著,使用 strcpy 函數將字符串 str2 復制到字符串 str1 中,並輸出復制後的字符串。

字符串的輸入輸出

在 C語言中,我們可以使用 printf 函數和 scanf 函數來輸入和輸出字符串。輸出字符串時,需要使用%s轉換說明符;輸入字符串時,需要使用%s格式化字符串。

例如:

char str[20];
printf("請輸入一個字符串:");
scanf("%s", str);
printf("你輸入的字符串為:%s\n", str);

在以上代碼中,我們使用 scanf 函數輸入一個字符串,並使用 printf 函數輸出該字符串。

字符串的比較

在 C語言中,我們可以使用 strcmp 函數來比較兩個字符串的大小。strcmp 函數的原型如下:

int strcmp(const char *s1, const char *s2);

其中,s1 和 s2 是要比較的字符串。如果 s1 大於 s2,返回一個正數;如果 s1 小於 s2,返回一個負數;如果 s1 等於 s2,返回 0。例如:

char str1[] = "hello";
char str2[] = "world";
int result = strcmp(str1, str2);
if(result > 0) {
    printf("%s大於%s\n", str1, str2);
} else if(result < 0) {
    printf("%s小於%s\n", str1, str2);
} else {
    printf("%s等於%s\n", str1, str2);
}

在以上代碼中,我們首先定義瞭兩個字符串"hello"和"world"。接著,使用 strcmp 函數比較兩個字符串的大小,並輸出比較結果。

字符串的拼接

在 C語言中,我們可以使用 strcat 函數來將一個字符串拼接到另一個字符串的末尾。strcat 函數的原型如下:

char *strcat(char *dest, const char *src);

其中,dest 是目標字符串,src 是要拼接的字符串。strcat 函數將 src 字符串拼接到 dest 字符串的末尾,並返回 dest 字符串的地址。例如:

char str1[20] = "hello";
char str2[] = "world";
strcat(str1, str2);
printf("拼接後的字符串為:%s\n", str1);

在以上代碼中,我們首先定義瞭一個字符串"hello"和一個字符串"world"。接著,使用 strcat 函數將字符串"world"拼接到字符串"hello"的末尾,並輸出拼接後的字符串。

字符串的查找和替換

在 C語言中,我們可以使用 strchr 函數來查找一個字符在字符串中第一次出現的位置。strchr 函數的原型如下:

char *strchr(const char *s, int c);

其中,s 是要查找的字符串,c 是要查找的字符。strchr 函數返回字符 c 在字符串 s 中第一次出現的位置,如果字符 c 在字符串 s 中不存在,則返回 NULL。例如:

char str[] = "hello world";
char *p = strchr(str, 'o');
if(p != NULL) {
    printf("字符o在字符串中第一次出現的位置為:%d\n", p - str);
} else {
    printf("字符o不存在\n");
}

在以上代碼中,我們首先定義瞭一個字符串"hello world"和一個字符'o'。接著,使用 strchr 函數查找字符'o'在字符串中第一次出現的位置,並輸出該位置。

在 C語言中,我們還可以使用 strstr 函數來查找一個字符串在另一個字符串中第一次出現的位置。strstr 函數的原型如下:

char *strstr(const char *s1, const char *s2);

其中,s1 是要查找的字符串,s2 是要查找的子串。strstr 函數返回字符串 s2 在字符串 s1 中第一次出現的位置,如果字符串 s2 在字符串 s1 中不存在,則返回 NULL。例如:

char str[] = "hello world";
char sub[] = "world";
char *p = strstr(str, sub);
if(p != NULL) {
    printf("字符串%s在字符串%s中第一次出現的位置為:%d\n", sub, str, p - str);
} else {
    printf("字符串%s不存在\n", sub);
}

在以上代碼中,我們首先定義瞭一個字符串"hello world"和一個子串"world"。接著,使用 strstr 函數查找子串"world"在字符串"hello world"中第一次出現的位置,並輸出該位置。

在 C語言中,我們可以使用 strrchr 函數來查找一個字符在字符串中最後一次出現的位置。strrchr 函數的原型與 strchr 函數相同,隻不過 strrchr 函數查找的是字符在字符串中最後一次出現的位置。例如:

char str[] = "hello world";
char *p = strrchr(str, 'o');
if(p != NULL) {
    printf("字符o在字符串中最後一次出現的位置為:%d\n", p - str);
} else {
    printf("字符o不存在\n");
}

在以上代碼中,我們首先定義瞭一個字符串"hello world"和一個字符'o'。接著,使用 strrchr 函數查找字符'o'在字符串中最後一次出現的位置,並輸出該位置。

在 C語言中,我們還可以使用 strtok 函數將一個字符串按照指定的分隔符分成若幹個子串。strtok 函數的原型如下:

char *strtok(char *s, const char *delim);

其中,s 是要分割的字符串,delim 是分隔符。strtok 函數第一次調用時,s 指向要分割的字符串,函數返回 s 中第一個不包含分隔符的子串;之後每次調用時,s 應該設為 NULL,函數返回 s 中下一個不包含分隔符的子串,直到所有子串都被分割完為止。例如:

char str[] = "hello,world,!";
char *p = strtok(str, ",");
while(p != NULL) {
    printf("%s\n", p);
    p = strtok(NULL, ",");
}

在以上代碼中,我們首先定義瞭一個字符串"hello,world,!",並使用逗號作為分隔符。接著,使用 strtok 函數將字符串按照逗號分割成若幹個子串,並逐個輸出這些子串。

在 C語言中,我們可以使用 strstr 函數來查找一個字符串在另一個字符串中第一次出現的位置。strstr 函數的原型如下:

char *strstr(const char *s1, const char *s2);

其中,s1 是要查找的字符串,s2 是要查找的子串。strstr 函數返回字符串 s2 在字符串 s1 中第一次出現的位置,如果字符串 s2 在字符串 s1 中不存在,則返回 NULL。例如:

char str[] = "hello world";
char sub[] = "world";
char *p = strstr(str, sub);
if(p != NULL) {
    printf("字符串%s在字符串%s中第一次出現的位置為:%d\n", sub, str, p - str);
} else {
    printf("字符串%s不存在\n", sub);
}

在以上代碼中,我們首先定義瞭一個字符串"hello world"和一個子串"world"。接著,使用 strstr 函數查找子串"world"在字符串"hello world"中第一次出現的位置,並輸出該位置。

字符串的常用函數

在 C語言中,有很多與字符串相關的函數。下面我們列舉一些常用的字符串函數及其用法:

strcpy函數

strcpy 函數用於將一個字符串復制到另一個字符串中。strcpy 函數的原型如下:

char *strcpy(char *dest, const char *src);

其中,dest 是目標字符串,src 是源字符串。strcpy 函數將源字符串復制到目標字符串中,並返回目標字符串的地址。例如:

char src[] = "hello world";
char dest[20];
strcpy(dest, src);
printf("復制後的字符串為:%s\n", dest);

在以上代碼中,我們首先定義瞭一個源字符串"hello world"和一個目標字符串 dest。接著,使用 strcpy 函數將源字符串復制到目標字符串中,並輸出復制後的字符串。

strcat函數

strcat 函數用於將一個字符串追加到另一個字符串的末尾。strcat 函數的原型如下:

char *strcat(char *dest, const char *src);

其中,dest 是目標字符串,src 是源字符串。strcat 函數將源字符串追加到目標字符串的末尾,並返回目標字符串的地址。例如:

char dest[20] = "hello";
char src[] = "world";
strcat(dest, src);
printf("追加後的字符串為:%s\n", dest);

在以上代碼中,我們首先定義瞭一個目標字符串"hello"和一個源字符串"world"。接著,使用 strcat 函數將源字符串追加到目標字符串的末尾,並輸出追加後的字符串。

strlen函數

strlen 函數用於計算一個字符串的長度。strlen 函數的原型如下:

size_t strlen(const char *s);

其中,s 是要計算長度的字符串。strlen 函數返回字符串的長度。例如:

char str[] = "hello world";
printf("字符串的長度為:%d\n", strlen(str));

在以上代碼中,我們首先定義瞭一個字符串"hello world"。接著,使用 strlen 函數計算該字符串的長度,並輸出結果。

strcmp函數

strcmp 函數用於比較兩個字符串的大小。strcmp 函數的原型如下:

int strcmp(const char *s1, const char *s2);

其中,s1 和 s2 是要比較的兩個字符串。strcmp 函數返回一個整數,表示兩個字符串的大小關系。如果 s1 小於 s2,返回一個負整數;如果 s1 等於 s2,返回 0;如果 s1 大於 s2,返回一個正整數。例如:

char str1[] = "hello";
char str2[] = "world";
if(strcmp(str1, str2) < 0) {
    printf("%s在%s之前\n", str1, str2);
} else if(strcmp(str1, str2) == 0) {
    printf("%s與%s相等\n", str1, str2);
} else {
    printf("%s在%s之後\n", str1, str2);
}

在以上代碼中,我們使用 strcmp 函數比較瞭兩個字符串"hello"和"world"的大小,由於"hello"在字典序上小於"world",因此輸出結果為"hello 在 world 之前"。

strchr函數

strchr 函數用於在一個字符串中查找指定字符的位置。strchr 函數的原型如下:

char *strchr(const char *s, int c);

其中,s 是要查找的字符串,c 是要查找的字符。strchr 函數返回指向第一個匹配字符的指針,如果沒有找到匹配字符,則返回 NULL。例如:

char str[] = "hello world";
char *p = strchr(str, 'o');
if(p) {
    printf("字符o在%s中的位置為:%d\n", str, p - str);
} else {
    printf("%s中未找到字符o\n", str);
}

在以上代碼中,我們首先定義瞭一個字符串"hello world",接著使用 strchr 函數查找其中字符'o'的位置,並輸出結果。由於第一個'o'字符在第五個位置,因此輸出結果為"字符 o 在 hello world 中的位置為:4"。

strstr函數

strstr 函數用於在一個字符串中查找另一個字符串的位置。strstr 函數的原型如下:

char *strstr(const char *s1, const char *s2);

其中,s1 是要查找的字符串,s2 是要查找的子字符串。strstr 函數返回指向第一個匹配子字符串的指針,如果沒有找到匹配子字符串,則返回 NULL。例如:

char str[] = "hello world";
char *p = strstr(str, "world");
if(p) {
    printf("%s中包含子字符串\"world\"\n", str);
} else {
    printf("%s中不包含子字符串\"world\"\n", str);
}

在以上代碼中,我們首先定義瞭一個字符串"hello world",接著使用strstr函數查找其中是否包含子字符串"world",並輸出結果。由於該字符串中包含子字符串"world",因此輸出結果為"hello world中包含子字符串"world""。

sprintf函數

sprintf 函數用於將格式化的數據寫入一個字符串中。sprintf 函數的原型如下:

int sprintf(char *str, const char *format, ...);

其中,str 是要寫入的字符串,format 是格式化字符串。sprintf 函數將格式化的數據寫入 str 中,並返回寫入的字符數。例如:

char str[50];
int a = 10, b = 20;
sprintf(str, "a = %d, b = %d", a, b);
printf("%s\n", str);

在以上代碼中,我們首先定義瞭一個空字符串 str 和兩個整型變量 a 和 b。接著使用 sprintf 函數將格式化的數據"a = 10, b = 20"寫入 str 中,並輸出結果。

到此為止,我們已經介紹瞭 C語言中的一些常用字符串函數及其用法。在實際編程中,字符串是非常常用的數據類型,熟練掌握字符串函數的使用對於編寫高效、簡潔的代碼非常重要。

最後,我們再來看一下以下代碼:

char str[] = "hello";
str[0] = 'H';
printf("%s\n", str);

這段代碼首先定義瞭一個字符串"hello",然後將其第一個字符'h'改為大寫'H',並輸出結果。這裡涉及到瞭字符串的一個重要特性——字符串是一個字符數組。在定義一個字符串時,實際上定義的是一個字符數組,字符串函數也都是在對字符數組進行操作。因此,我們可以像操作普通的字符數組一樣操作字符串,例如修改其某個字符、獲取其長度等。

總結

本文介紹瞭 C語言中的字符串類型及其常用函數的用法,包括字符串的定義、賦值、輸出、比較、查找等操作,以及常用的字符串函數如 strlen、strcpy、strcat、strcmp、strchr、strstr、sprintf 等。

同時,我們還討論瞭字符串作為字符數組的一些特性,例如可以修改其某個字符、獲取其長度等。掌握字符串函數的使用對於編寫高效、簡潔的代碼非常重要。

到此這篇關於C語言中字符串常用操作總結的文章就介紹到這瞭,更多相關C語言字符串操作內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: