在 C 语言中,字符串实际上是使用 null 字符 ' ' 终止的一维字符数组。
因此,一个以 null 结尾的字符串,包含了组成字符串的字符。
下面的声明和初始化创建了一个 "Hello" 字符串。
由于在数组的末尾存储了空字符,所以字符数组的大小比单词 "Hello" 的字符数多一个。
char greeting[6] = {'H', 'e', 'l', 'l', 'o', ''};
依据数组初始化规则,等价与下面的语句:
char greeting[] = "Hello";
C 编译器会在初始化数组时,自动把 ' ' 放在字符串的末尾。
11.1 C 中操作字符串的函数
标准库---- #include <string.h>
strcpy(s1, s2); | 复制字符串 s2 到字符串 s1 |
strcat(s1, s2); | 连接字符串 s2 到字符串 s1 的末尾 |
strlen(s1); | 返回字符串 s1 的长度 |
strcmp(s1, s2); | 如果 s1 和 s2 是相同的,则返回 0 ; 如果 s1<s2 则返回小于 0 ; 如果 s1>s2 则返回大于 0 。 |
strchr(s1, ch); | 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置 |
strstr(s1, s2); | 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置 |
strlwr(s1); | 将s1中字符串都转为小写 |
strupr(s1); | 将s1中字符串都转为大写 |
/*-----------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
/*-----------------------------------------------------------------------*/
/*
* @brief
* 关于 main 的功能描述:
* 使用库‘string.h’,做相关的字符串操作.
* @param[in] void
*
* @return return 0
*
* @implements 低层需求标识号 XXXX
*/
int main()
{
char str1[10], str3[5];
memset(str1, '0', sizeof(str1)); //字符串初始化
memset(str3, '\0', sizeof(str3));
char str2[] = "Abcdefg";
strcpy(str1, str2); //复制2中字符串到1
printf("str1=%s\n", str1);
printf("str2=%s\n", str2);
strncpy(str3, str2 + 2, 3); //复制2中第3个字符开始,
printf("str3=%s\n", str3); //共3个字符到str3中
printf("\n");
printf("小写=%s\n", strlwr(str2));
printf("大写=%s\n", strupr(str2));
printf("字符串个数=%d\n", strlen(str2));
printf("\n");
return 0;
}
/*-----------------------------------------------------------------------*/
Visual Studio 运行结果:
11.2 指针引用字符串
使用数组下标法
/*-----------------------------------------------------------------------*/
#include <stdio.h>
void main()
{
char string[] = "I Love China!";
printf("%s\n", string);
printf("%c\n", string[8 - 1]);
printf("\n");
}
/*-----------------------------------------------------------------------*/
Visual Studio 运行结果:
使用指针引用
/*-----------------------------------------------------------------------*/
#include <stdio.h>
void main()
{
char *string = "I Love China!"; //定义字符指针变量并初始化
printf("%s\n", string);
printf("%c\n", string[8 - 1]);
printf("\n");
}
/*-----------------------------------------------------------------------*/
Visual Studio 运行结果:
非常感谢您的支持!创作不易,转发备注出处!
自用展示内容,不定期更新维护内容,让我们把 C开发 变得更专业。
十年开发基本功,常年开班收徒(一年学徒制度),每年10个名额。
商业合作加微信,项目接包与外包。