C语言中字符型数组的实现示例

 更新时间:2025年12月18日 10:20:23   作者:VekiSon  
本文主要介绍了C语言中字符型数组的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、字符型数组的基本概念

用途:用来存储字符串

1.C语言中定义字符数组

char str[常量];

  • 在开辟内存空间的时候,需要有足够大的空间。
  • "hello world",共11个有效字符,需要注意的是,最后是'\0'.

2.字符型数组的访问

char str[15] = "hello world";

int i = 0;
str[0] == h; //char
str[i] == h; //char
str[i+1] == e; //char
str[10] == d;
str[11] = '\0';


printf("%c", a[0]);
a[0] =a;
  • 下标的范围 :0 ~ N-1
  • 下标可以是常量、变量、表达式。
  • 不能整体操作,只能单个字符操作。 系统中提供库函数,可以整体操作。

3.字符串的初始化

char str[50] = "hello";
char str2[10] = {'b','u','s',};
char str3[6] = {"hello"};
char str4[10] = {0};
char str5[] = {'h','e','l','l','o','\0'};// 如果不指定数组大小,使用单个字符初始化,一定要写'\0'
char str6[] = "hello6";
char str7[] = {"hellor7"};

注意:

  • 字符串常量初始化的字符数组,其长度至少为 “字符串长度 + 1”(预留 '/0' 的位置)。
  • 如果不指定数组大小,使用单个字符初始化,一定要写 '\0'

4.字符串的输出

//单个字符
putchar(str[0]); // 方式1
printf("%c\n",str[0]); // 方式2

//显示整个字符串
int i = 0 ; // 方式1
for(i = 0; str[i] != '\0'; i++)
{
    printf("%c\n",str[i]);
}
printf("str is %s\n",str); // 方式2
puts(str); // 方式3

5.字符串的输入

char str[50] = {0}; // 方式1
printf("input name:");
scanf("%s", str); // 接收的字符串中不能有空格

char str2[50] = {0}; // 方式2
gets(str2); // 接收的字符串中可以有空格

二、字符串相关函数

1.获得字符串有效长度(strlen)

功能:计算字符串中有效字符的个数(不包含 '\0')。

原型:size_t strlen(const char *str)

int len = strlen(str); // 会返回str的有效长度
  • strlen 的替代写法:
int i = 0 ;
while(1)
{
    if('\0' == str[i])
    {
        break;
    }
    i++;
    len++;
}

2.字符串的复制(strcpy)

功能:将源字符串 (src) 复制到目标字符数组 (dest),包括 '\0',目标字符串原来的内容会被覆盖。

原型:char *strcpy(char *dest, const char *src);

char dest[10] = "aaa";
char src[10] = "bbb";
strcpy(dest, src); // dest变为"bbb"

str2 = str1; // 这个是错误的,不是复制内容。

注意:目标数组 dest 必须有足够空间,否则会导致缓冲区溢出(危险!)。

  • strcpy 的替代写法:
int i=0;
while(1)
{
    if('\0' == str[i])
    {
        break;
    }
    str2[i] = str[i];
    i++;
}

3.字符串的拼接(strcat)

功能:将源字符串拼接到目标字符串的末尾(覆盖 dest 原有的 '\0',并在新末尾加 '\0')。

原型:char *strcat(char *dest, const char *src);

char dest[20] = "hello";
char src[] = " world";
strcat(dest, src);  // dest变为"hello world"

注意:dest 必须有足够空间容纳拼接后的结果。

  • strcat 的替代写法:
int i = 0, j = 0;

// 设置i的值为源字符串的末尾位置
while(1)
{
    if('\0' == str[i])
    {
        break;
    }
    i++;
}

// 拼接字符串
while(1)
{
    str[i] = str2[j];
    if('\0' == str2[j])
    {
        break;
    }
    i++;
    j++;
}

4.字符串的比较(strcmp)

功能:按 ASCII 值逐个比较两个字符串的字符,返回比较结果。

原型:int strcmp(const char *s1, const char *s2);

返回值:

  • 0:内容相同。
  • > 0 或 < 0:内容不相同。如果不相同,实际是不同的字符进行相减操作。
char str1[] = "apple";
char str2[] = "banana";
printf("%d\n", strcmp(str1, str2));  // 返回值<0('a' ASCII值 < 'b')
printf("%d\n", strcmp(str1, "apple"));  // 返回值=0(相等)
  • strcmp 的替代写法:
int i = 0;
int ret = 0;

while(1)
{
    if(str1[i] == str2[i] && str1[i] != 0)
    {
        i++;
    }
    else
    {
        ret = str1[i] - str2[i];
        break;
    }
}

printf("ret %d\n", ret);

到此这篇关于C语言中字符型数组的实现示例的文章就介绍到这了,更多相关C语言 字符型数组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++实现支持32位和64位进程的模块枚举

    C++实现支持32位和64位进程的模块枚举

    这篇文章主要为大家详细介绍了如何使用C++实现支持32位和64位进程的模块枚举,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-12-12
  • C语言简单实现快速排序

    C语言简单实现快速排序

    快速排序是一种不稳定排序,这篇文章主要为大家详细介绍了C语言简单实现快速排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • 指向类成员函数的指针其实并非指针

    指向类成员函数的指针其实并非指针

    对于指向类成员的指针,必须紧记,指向类成员(非static)的指针并非指针
    2013-08-08
  • C语言 指针数组详解及示例代码

    C语言 指针数组详解及示例代码

    本文主要介绍C语言 指针数组,这里提供详细的资料和简单示例代码以便大家学习参考,有需要学习的小伙伴可以参考下
    2016-08-08
  • C语言之陷阱与缺陷详解

    C语言之陷阱与缺陷详解

    本片文章是对C++中陷阱与缺陷进行了详细的分析介绍,小编觉得本片文章讲解的非常详细,需要的朋友参考下,希望能够给你带来帮助
    2021-09-09
  • C++中的异常处理机制详解

    C++中的异常处理机制详解

    本文给大家分享的是C++中的异常处理机制。对如何处理异常、基本异常语法、异常保护代码等进行了探讨,推荐给大家。
    2017-04-04
  • C++中String类型的逆序方式

    C++中String类型的逆序方式

    这篇文章主要介绍了C++中String类型的逆序方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 举例剖析C++中引用的本质及引用作函数参数的使用

    举例剖析C++中引用的本质及引用作函数参数的使用

    这篇文章主要介绍了C++中引用的本质及引用作函数参数的使用,讲解了函数返回值是引用的情况等一些难点,需要的朋友可以参考下
    2016-03-03
  • C++实现LeetCode(45.跳跃游戏之二)

    C++实现LeetCode(45.跳跃游戏之二)

    这篇文章主要介绍了C++实现LeetCode(45.跳跃游戏之二),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 详解C++设计模式编程中对状态模式的运用

    详解C++设计模式编程中对状态模式的运用

    这篇文章主要介绍了C++设计模式编程中对状态模式的运用,状态模式允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类,需要的朋友可以参考下
    2016-03-03

最新评论