1、字符串
C语言字符串是使用\0
终止的一维字符数组。'\0
'就是 ASCII 码为 0 的字符,对应的字符是(Null),表示"字符串结束符",是字符串结束的标志。由于在数组的末尾存储了空字符,所以字符数组的大小比字符数多一个。
char name[8] = {'C', 'J', 'A', 'V', 'A', 'P','Y', '\0'};
也可以直接使用字符串初始化:
char name[] = “CJAVAPY”;
还可以使用指针定义字符串:
char *str = "CJAVAPY";
注意:字符串需要把 null
字符(\0
)放在字符串常量的末尾。C 编译器会在初始化数组时,自动把 \0
放在字符串的末尾。另外,使用指针方式定义的字符串是常量字符串,不能修改其中的内容。它指向存储在程序常量区的内存。
例如,
#include <stdio.h>
int main ()
{
char name[8] = {'C', 'J', 'A', 'V'
, 'A', 'P','Y', '\0'};
//char name[] = "CJAVAPY";
//char *str = "CJAVAPY";
printf("www.cjavapy.com is : %s\n", name);
return 0;
}
2、常用的字符串操作函数
C语言中处理字符串的标准库函数定义在 string.h
头文件中,常用的字符串操作函数如下,
1) strlen()
计算字符串的长度(不包括末尾的\0
)。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
printf("Length of string: %zu\n", strlen(str)); // 输出:13
return 0;
}
2)strcpy()
将源字符串复制到目标字符串中。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello";
char dest[10];
strcpy(dest, src);
printf("Destination: %s\n", dest); // 输出:Hello
return 0;
}
3)strcat()
将源字符串连接到目标字符串后面。
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hello";
char str2[] = ", World!";
strcat(str1, str2);
printf("Concatenated String: %s\n", str1); // 输出:Hello, World!
return 0;
}
4)strcmp()
比较两个字符串。如果字符串相等,返回0;如果第一个字符串大于第二个字符串,返回正值;反之,返回负值。
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
printf("Comparison result: %d\n", result); // 输出结果取决于字符串内容
return 0;
}
5)strncpy() 和 strncat()
两个函数与strcpy()
和 strcat()
类似,但是可以指定复制或连接的最大字符数,以防止缓冲区溢出。
3、字符串遍历
可以使用循环逐个字符访问字符串,直到遇到空字符 \0
。
#include <stdio.h>
int main() {
char str[] = "Hello";
for (int i = 0; str[i] != '\0'; i++) {
printf("%c ", str[i]);
}
return 0;
}