下面我将为您详细讲解C语言中串的简单实例。
1. 什么是串
在C语言中,串(String)是由一系列字符组成的序列,是一种常见的数据类型。在C语言中,串通常是以字符数组(Char Array)的方式进行存储的。
2. 定义和初始化串
在C语言中,定义和初始化串可以通过以下方式进行:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[12] = "Hello World";
char str2[] = "Hello World";
char str3[12];
strcpy(str3, "Hello World");
printf("str1: %s\n", str1);
printf("str2: %s\n", str2);
printf("str3: %s\n", str3);
return 0;
}
上述代码中,我们通过三种方式分别定义和初始化了三个串str1、str2、str3。其中,str1和str3的长度为12,因此分别通过直接赋值和strcpy()函数对其进行初始化;而str2则省略了长度,在初始化时自动计算长度。
3. 串的基本操作
在C语言中,串的操作主要包括以下几种:
3.1 求串长
求串长指的是求解串中字符的数量,在C语言中可以通过strlen()函数进行求解:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "Hello World";
printf("str length: %d\n", strlen(str));
return 0;
}
3.2 串的拼接
串的拼接指的是将两个(或多个)串合并成一个串的操作,在C语言中可以通过strcat()函数进行拼接:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[12] = "Hello ";
char str2[] = "World";
strcat(str1, str2);
printf("str1: %s\n", str1);
return 0;
}
上述代码中,我们通过strcat()函数将str2拼接到了str1中,最终得到了一个新的串str1。在使用strcat()函数时,需要注意串str1的长度应该足够长,否则可能会造成内存溢出等问题。
3.3 串的比较
串的比较指的是将两个串进行比较,判断它们是否相等,在C语言中可以通过strcmp()函数进行比较:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "Hello World";
char str2[] = "HELLO WORLD";
char str3[] = "Hello World";
int result1, result2, result3;
result1 = strcmp(str1, str2);
result2 = strcmp(str1, str3);
result3 = strcmp(str2, str3);
printf("result1: %d\n", result1);
printf("result2: %d\n", result2);
printf("result3: %d\n", result3);
return 0;
}
上述代码中,我们比较了三个串str1、str2、str3。由于strcmp()函数是区分大小写的,因此result1的值为非0;而由于str1和str3内容相同,result2的值为0;result3的值为非0。
3.4 截取子串
截取子串指的是取出串中的一部分字符形成新的子串,在C语言中可以通过strncpy()函数和strncat()函数进行操作:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "Hello World";
char str2[6];
char str3[12];
strncpy(str2, str1, 5);
str2[5] = '\0';
printf("str2: %s\n", str2);
strncat(str3, str1, 5);
printf("str3: %s\n", str3);
return 0;
}
上述代码中,我们从str1中取出前5个字符,分别通过strncpy()函数和strncat()函数得到了新的子串str2和str3。
4. 示例说明
下面给出两个具体的示例说明串的使用。
4.1 字符串匹配问题
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "aaaabbb";
char str2[] = "ab";
char *result;
result = strstr(str1, str2);
if (result == NULL) {
printf("Cannot match\n");
} else {
printf("Match: %s\n", result);
}
return 0;
}
上述代码中,我们利用strstr()函数解决了一个字符串匹配问题,即通过判断str2是否是str1的子串来进行匹配操作。如果匹配成功,则输出匹配结果;否则输出“Cannot match”。
4.2 根据文件扩展名进行分类
#include <stdio.h>
#include <string.h>
int main()
{
char filename[50];
printf("Enter Filename: ");
scanf("%s", filename);
if (strstr(filename, ".doc")) {
printf("This is a MS Word Document.\n");
} else if (strstr(filename, ".txt")) {
printf("This is a Text Document.\n");
} else {
printf("Unknown File Type.\n");
}
return 0;
}
上述代码中,我们利用strstr()函数根据文件扩展名对文件进行了分类,准确判断了它的种类。如果扩展名匹配到了“doc”,则说明文件是一个MS Word文档;如果匹配到了“txt”,则说明文件是一个文本文档;否则输出“Unknown File Type”。这种方法适用于对文件类型的初步判断,可以在文件管理、浏览等场景中有用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C数据结构中串简单实例 - Python技术站