c语言:4、数组与字符串
1、简介
字符串是由多个字符组成的一段话。
在c语言中,是没有办法直接定义字符串数据类型的,但是可以使用数组来定义我们需要的字符串。
一般有下方两种定义形式:
//1、定义方式1
char 字符串名字[长度] = "字符串值";
//2、定义方式2
char 字符串名称[长度] = {'字符1','字符2',...'字符n','\0'};
注意:
- []中的长度可以省略
- 采用第二种方式时,最后一个元素必须是’\0’,’\0’表示字符串的结束标志;
- 采用第二种方式的时候,数组中不能写中文
在输出字符串的时候要使用:printf("%s", 字符数组名字);
或者puts(“字符数组名字”)
#include <stdio.h>
int main()
{
//字符串定义方式1
char string1[] = "我爱中国!";
//字符串定义方式2
char string2[] = {'h', 'e', 'l', 'l','o', '\0'};
//输出两段字符串
printf("%s\n", string1);
printf("%s\n", string2);
return 0;
}
2、例子
#include <stdio.h>
void say(char string[])
{
printf("%s\n", string);
}
int main()
{
char string1[] = "我爱中国!";
char string2[] = {'h','e','l','l','o','\0'};
say(string1);
say(string2);
return 0;
}
3、字符串函数
常用的字符串函数如下:
strlen( stringName)
strlen()获取字符串长度时\0
是不包括进去的,且汉字与字母长度不一样
char str1[] = "你好呀";
char str2[] = {'h','e','l','l','o','\0'};
int len1 = strlen(str1);
int len2 = strlen(str2);
printf("str1的长度为:%d\n", len1);
printf("str2的长度为:%d\n", len2);
strcmp( stringName1, stringName2)
strcmp()在比较的时候回把字符串转成ASCII码再进行比较,
返回0表示s1和s2的ASCII码相等;
返回正数表示s1比s2的ASCII码大;
返回负数表示s1比s2的ASCII码小;
char str1[] = "a";
char str2[] = "b";
char str3[] = "c";
printf("a的ASCII码为:%d\n", 'a');
printf("b的ASCII码为:%d\n", 'b');
printf("c的ASCII码为:%d\n", 'c');
printf("str1与str2的比较结果为:%d\n", strcmp(str1, str2));
printf("str2与str3的比较结果为:%d\n", strcmp(str2, str3));
printf("str1与str3的比较结果为:%d\n", strcmp(str1, str3));
本质上应该是把str1的ASCII码减去str2的ASCII码
strcpy( stringName, stringValue)
strcpy()拷贝后,会将stringValue的值覆盖stringName,且不能对字符串常量进行拷贝。
#include <stdio.h>
#include <string.h>
#define PI "imooc"
int main()
{
char str[] = "慕课网";
strcpy(str, "I love imooc");
printf("%s\n", str);//输出:I love imooc
//下方代码没有运行结果
//strcpy(PI, "hello");
//printf("%s\n", PI);
return 0;
}
strcat(string1, string2)
strcat()在使用时string1要有足够的空间来容纳要拼接的字符串
char s1[10] = "hello ";
char s2[] = "world";
strcat(s1, s2);
printf("%s\n", s1);