5、数组-字符数组和字符串

143 阅读1分钟

字符数组

字符数组是存放字符型数据的数组

字符串

字符串是由若干个字符组成的,最后一个字符是字符串的结束标志符“\0”

字符变量char只能存放单个字符,不能存放字符串,C语言中没有专门的字符串变量,若想将一个字符串存放到变量,必须使用字符数组。

//如果自己不写\0,则系统会自动在末尾加上 \0,但要多留一个长度
char str[6] = { 'h','e','l','l','o','\0' };
char str2[6] = { "hello" };
char str3[6] = "hello";

以上三种方式都可以定义一个字符串,\0 不作为字符串的有效字符,是起到标志结束的作用,会占用1个字节的内存。

二维字符数组

char tStr[2][6] = { "hello","hello" };

打印字符数组

//整体打印
printf("%s\n", str);

//单个打印
for (int i = 0; i < 5; i++) {
	printf("%c\n", str[i]);
}

练习

统计子串在字符中出现的次数

#include <stdio.h>
#include <string.h>
int main(void) {
	char str[80], subStr[10];
	int i = 0, j = 0, num = 0;
	printf("输入一个字符串:");
	gets_s(str);
	printf("输入一个子串:");
	gets_s(subStr);

	for (i = 0; str[i] != '\0'; i++) {
		int k = 0;
		for (j = i; str[j] == subStr[k] && str[j] != '\0'; k++, j++) {
			if (subStr[k + 1] == '\0') {
				num++;
				break;
			}
		}
	}
	printf("子串出现了 %d 次\n", num);
	return 0;
}

程序运行结果:
输入一个字符串:how to catch a cat?
输入一个子串:cat
子串出现了 2 次