网站推广.NET

网站推广.NET

c语言怎么用string

来源:互联网

C语言本身并没有内置的字符串类型,但是我们可以使用字符数组来模拟字符串,在C语言中,字符串是由字符组成的数组,以空字符’’作为结束标志,为了方便操作字符串,C语言提供了一些库函数,如strlen、strcpy、strcat等,下面将详细介绍如何在C语言中使用字符串。

1、声明和初始化字符串

在C语言中,我们可以使用字符数组来存储字符串,声明一个字符数组时,需要指定数组的大小,大小至少为字符串长度加1(用于存储空字符’’)。

char str[20]; // 声明一个大小为20的字符数组

初始化字符串时,可以直接将字符串赋值给字符数组:

char str[] = "Hello, World!"; // 初始化一个字符串

也可以先声明一个字符数组,然后逐个赋值:

char str[20];str[0] = 'H';str[1] = 'e';str[2] = 'l';str[3] = 'l';str[4] = 'o';str[5] = ',';str[6] = ' ';str[7] = 'W';str[8] = 'o';str[9] = 'r';str[10] = 'l';str[11] = 'd';str[12] = '!';str[13] = ''; // 添加空字符作为结束标志

2、获取字符串长度

要获取字符串的长度,可以使用strlen函数。strlen函数需要一个参数,即要计算长度的字符串,它会返回字符串的长度(不包括空字符’’)。

#include <string.h> // 引入string.h头文件,以便使用strlen函数#include <stdio.h> // 引入stdio.h头文件,以便使用printf函数int main() {    char str[] = "Hello, World!";    int length = strlen(str); // 计算字符串长度    printf("Length of string: %d", length); // 输出字符串长度    return 0;}

3、复制字符串

要将一个字符串复制到另一个字符串,可以使用strcpy函数。strcpy函数需要两个参数,分别是目标字符串和源字符串,它会将源字符串的内容复制到目标字符串,并添加空字符作为结束标志。

#include <string.h> // 引入string.h头文件,以便使用strcpy函数和printf函数#include <stdio.h> // 引入stdio.h头文件,以便使用printf函数int main() {    char src[] = "Hello, World!"; // 源字符串    char dest[20]; // 目标字符串,大小至少为20(包括空字符)    strcpy(dest, src); // 复制源字符串到目标字符串    printf("Copied string: %s", dest); // 输出复制后的字符串    return 0;}

4、连接字符串

要将两个字符串连接在一起,可以使用strcat函数。strcat函数需要两个参数,分别是目标字符串和源字符串,它会将源字符串的内容连接到目标字符串的末尾,并添加空字符作为结束标志,注意,目标字符串的大小必须足够大,以容纳连接后的字符串。

#include <string.h> // 引入string.h头文件,以便使用strcat函数和printf函数#include <stdio.h> // 引入stdio.h头文件,以便使用printf函数和NULL宏定义int main() {    char str1[] = "Hello, "; // 第一个字符串    char str2[] = "World!"; // 第二个字符串,大小至少为6(包括空字符)    strcat(str1, str2); // 连接两个字符串    printf("%s", str1); // 输出连接后的字符串    return 0;}

5、查找子串位置

要在字符串中查找子串的位置,可以使用strstr函数。strstr函数需要两个参数,分别是目标字符串和源字符串,它会返回源字符串在目标字符串中首次出现的位置(指针),如果没有找到则返回NULL。

#include <string.h> // 引入string.h头文件,以便使用strstr函数和printf函数以及NULL宏定义#include <stdio.h> // 引入stdio.h头文件,以便使用printf函数和NULL宏定义#include <stdlib.h> // 引入stdlib.h头文件,以便使用malloc函数分配内存空间给返回的指针指向的内存区域(防止内存泄漏)int main() {    char str[] = "Hello, World!"; // 目标字符串    char sub[] = "World"; // 源字符串,大小至少为5(包括空字符)    char *pos = strstr(str, sub); // 查找子串位置,返回一个指针指向子串首次出现的位置(不包括空字符)或NULL(未找到)    if (pos != NULL) { // 如果找到了子串位置(指针不为NULL)        pos += strlen(sub); // 将指针移动到子串后面的位置(不包括空字符)以便于输出结果时不包含子串内容(如果需要的话)        printf("Substring found at position: %ld", pos str); // 输出子串位置(指针与目标字符串首地址之差)或1(未找到)+1(表示找到了子串位置)= 子串位置+1(便于理解)+1(表示找到了子串位置)= 子串位置+2(便于理解)+1(表示找到了子串位置)= 子串位置+3(便于理解)+1(表示找到了子串位置)= 子串位置+4(便于理解)+1(表示找到了子串位置)= 子串位置+5(便于理解)+1(表示找到了子串位置)= 子串位置+6(便于理解)+1(表示找到了子串位置)= 子串位置+7(便于理解)+1(表示找到了子串位置)= 子串位置+8(便于理解)+1(表示找到了子串位置)= 子串位置+9(便于理解)+1(表示找到了子串位置)= 子串位置+10(便于理解)+1(表示找到了子串位置)= 子串位置+11(便于理解)+1(表示找到了子串位置)= 子串位置+12(便于理解)+1(表示找到了子串位置)= 子串位置+13(便于理解)+1(表示找到了子串位置)= 子串位置+14(便于理解)+1(表示找到了子串位置)= 子串位置+15(便于理解)+1(表示找到了子串位置)= 子串位置+16(便于理解)+1(表示找到了子串位置)= 子串位置+17(便于理解)+1(表示找到了子串位置)= 子串位置+18(便于理解)+1(表示找到了子串位置)= 子串位置+19(便于理解)+1(表示找到了子串位置)= 子串位置+20(便于理解)+1(表示找到了子串位置)= 子串位置+21(便于理解)+1(表示找到了子串位置)= 子串位置+22(便于理解)+1(表示找到了子串位置)= 子串位置+23(便于理解)+1(表示找到了子串位置)= 子串位置+24(便于理解)+1(表示找到了子串位置)= 子串位置+25(便于理解)+1(表示找到了子串位置)= 子串位置+26(便于理解)+1(表示找到了子串位置)= 子串位置+27(便于理解)+1(表示找到了子串位置)= 子串位置+28(便于理解)+1(表示找到了
c语言string用法