C语言字符串

C语言中,字符串是字符数组,它以特殊字符 \0(空字符)结尾来标识字符串的结束。与其他高级语言不同,C语言没有专门的字符串类型,字符串实际上是一个字符数组。同时,C 语言提供了一系列库函数来对操作字符串,这些库函数都包含在头文件 string.h 中。本文主要介绍C语言字符串。

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;
}

推荐阅读
cjavapy编程之路首页