📅  最后修改于: 2023-12-03 15:00:11.771000             🧑  作者: Mango
在C语言中,字符串是一系列字符的数组,以空字符\0
结尾。字符串可以用双引号"
或单引号'
括起来,如下所示:
char str1[] = "This is a string";
char str2[] = {'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 's', 't', 'r', 'i', 'n', 'g', '\0'};
可以看到,用双引号括起来的字符串会自动在结尾处添加一个空字符\0
,而单引号括起来的字符数组则需要手动添加。
C中字符串的赋值可以用=
或strcpy()
函数。例如:
char str1[] = "This is a string"; // 字符串赋值
char str2[20]; // 声明一个字符数组
strcpy(str2, str1); // 将str1复制到str2
C中字符串的比较有strcmp()
函数。例如:
char str1[] = "This is a string";
char str2[] = "This is another string";
int result = strcmp(str1, str2); // 比较两个字符串,返回一个整数值
if (result == 0) {
printf("The two strings are equal.\n");
} else if (result < 0) {
printf("The first string is less than the second.\n");
} else {
printf("The first string is greater than the second.\n");
}
C中字符串的连接可以用strcat()
函数。例如:
char str1[] = "This is a string";
char str2[] = " and this is another string.";
strcat(str1, str2); // 将str2连接到str1的结尾
printf("The concatenated string is: %s\n", str1);
C中可以用strncpy()
函数将一个字符串中的一部分复制到另一个字符数组中,例如:
char str1[] = "ABCDEFG";
char str2[4];
strncpy(str2, str1 + 2, 3); // 将str1中下标从2开始的三个字符复制到str2中
str2[3] = '\0'; // 需要手动添加结尾的空字符
printf("Copied string is: %s\n", str2); // 输出"ABC"
另外,也可以用strtok()
函数将一个字符串分成多个子字符串:
char str[] = "This is a string";
char* token = strtok(str, " "); // 分割字符串,以空格为分隔符
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, " "); // 继续分割,以NULL为终止符
}
在C中,字符数组必须预留足够的空间来存储字符串,如果长度不够就会出现问题。例如:
char str1[] = "This is a string";
char str2[10];
strcpy(str2, str1); // 复制字符串
printf("%s\n", str2); // 输出"This is a"
可以看到,由于字符数组str2
长度不够,复制字符串时只能存储部分字符串。
C中的字符串是字符数组,可以通过修改数组元素的方式来修改字符串。例如:
char str[] = "This is a string";
str[5] = 'X'; // 修改第6个字符为'X'
printf("%s\n", str); // 输出"This Xs a string"
但需要注意,如果修改后的字符串长度超过了原字符串长度,就需要重新分配内存。
在C中,可以使用printf()
函数输出字符串,使用scanf()
函数输入字符串。例如:
char str[20];
printf("Please enter a string: ");
scanf("%s", str); // 输入字符串
printf("You entered: %s\n", str);
需要注意的是,scanf()
函数默认用空格作为字符串的结束符,遇到空格就停止输入。如果需要输入带空格的字符串,可以用fgets()
函数代替scanf()
函数。例如:
char str[20];
printf("Please enter a string: ");
fgets(str, 20, stdin); // 输入字符串,20为最大字符数,stdin表示从标准输入流输入数据
printf("You entered: %s\n", str);