C语言定义字符串数组简单代码示例

 更新时间:2024年11月08日 08:53:07   作者:嵌入式学习和实践  
在C语言中字符串数组是用来存储多个字符串的,可以通过字符数组或指针数组的方式定义,这篇文章主要介绍了C语言定义字符串数组的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

一、字符串

在C语言中,字符串数组是一种存储多个字符串的数组。每个字符串本身是一个字符数组,以空字符(\0)结尾。

二、定义字符串数组

2.1 字符数组组成的数组

这种方式可以存储固定长度的字符串。示例:

//存储5个字符串,每个字符串最多有20个字符(包括空字符)
#include <stdio.h>
#include <string.h>

int main(void) 
{
    char strArray[5][20];  // 定义一个5x20的字符数组

    // 初始化字符串数组
    strcpy(strArray[0], "Hello");
    strcpy(strArray[1], "World");
    strcpy(strArray[2], "C Language");
    strcpy(strArray[3], "Programming");
    strcpy(strArray[4], "is Fun");

    // 打印字符串数组
    for (int i = 0; i < 5; i++)
     {
        printf("%s\n", strArray[i]);
    }

    return 0;
}
#include <stdio.h>
#include <string.h>

int main(void) 
{
  char strArray[5][20] =
   {
    "Hello\0\0\0\0\0\0\0\0\0\0\0\0", // 注意:这里手动添加了空字符和填充字符,实际上不需要这么多,只是为了说明
    "World\0",
    "C Lang\0", // 注意:这里"C Language"被截断为"C Lang",以适应数组大小
    "Progra\0", // "Programming"被截断为"Progra"
    "is Fun\0"
	};

    // 打印字符串数组
    for (int i = 0; i < 5; i++)
     {
        printf("%s\n", strArray[i]);
    }

    return 0;
}

strcpy函数用于将字符串复制到字符数组中。strArray是一个二维数组,其中strArray[i]是一个长度为20的字符数组(字符串)。

2.2 指针数组

这种方式可以存储长度不固定的字符串。

//存储5个字符串,但它们的长度是未知的
#include <stdio.h>
#include <string.h>

int main(void) 
{
    const char *strArray[5];  // 定义一个指针数组

    // 初始化字符串数组
    strArray[0] = "Hello";
    strArray[1] = "World";
    strArray[2] = "C Language";
    strArray[3] = "Programming";
    strArray[4] = "is Fun";

    // 打印字符串数组
    for (int i = 0; i < 5; i++)
     {
        printf("%s\n", strArray[i]);
    }

    return 0;
}
#include <stdio.h>
#include <string.h>

int main(void) 
{
    const char *strArray[5] = 
    {
    "Hello",
    "World",
    "C Language",
    "Programming",
    "is Fun"
	};

    // 打印字符串数组
    for (int i = 0; i < 5; i++)
     {
        printf("%s\n", strArray[i]);
    }

    return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void) 
{
     char *strArray[5];  // 定义一个指针数组

    // 初始化字符串数组
    strArray[0] = (  char *)malloc(strlen( "Hello"));
    strArray[1] = (  char *)malloc(strlen( "World")); 
    strArray[2] = (  char *)malloc(strlen( "C Language")); 
    strArray[3] = (  char *)malloc(strlen(  "Programming"));
    strArray[4] = (  char *)malloc(strlen( "is Fun")); 
    
    strcpy(strArray[0], "Hello");
    strcpy(strArray[1], "World");
    strcpy(strArray[2], "C Language");
    strcpy(strArray[3], "Programming");
    strcpy(strArray[4], "is Fun");

    // 打印字符串数组
    for (int i = 0; i < 5; i++)
     {
        printf("%s\n", strArray[i]);
    }
    //free
      for (int i = 0; i < 5; i++)
     {
        free(strArray[i]);
    }

    return 0;
}

strArray是一个指针数组,每个元素都指向一个字符串字面量。这种方法更灵活,因为字符串的长度可以不同,但所有字符串都必须是静态量或动态分配的(例如使用malloc)。

注意事项

1、使用字符数组时,要确保不超出数组的边界,否则会导致未定义行为。

2、使用指针数组时,要确保字符串的生命周期,避免悬挂指针(即指向已释放内存的指针)。

3、动态分配内存时,记得在程序结束时释放内存(使用free函数)。

总结

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

相关文章

  • 一篇带你了解C语言--位操作详情

    一篇带你了解C语言--位操作详情

    这篇文章主要介绍了关于C语言位运算的简单示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • Vs2019+Qt+Opencv环境配置心得(图文)

    Vs2019+Qt+Opencv环境配置心得(图文)

    这篇文章主要介绍了Vs2019+Qt+Opencv环境配置心得(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • C语言 指针变量作为函数参数详解

    C语言 指针变量作为函数参数详解

    本文主要介绍C语言 指针变量作为函数参数,这里整理了相关资料和示例代码,以便大家学习参考理解知识点,有需要的小伙伴可以参考下
    2016-08-08
  • 深入浅析C/C++语言结构体指针的使用注意事项

    深入浅析C/C++语言结构体指针的使用注意事项

    这篇文章主要介绍了C/C++语言结构体指针的使用,大家都知道指针在32位系统占用4Byte,在64位系统占用8Byte,下面看下c语言代码例子
    2021-12-12
  • C语言中类型转换不匹配的解决方案

    C语言中类型转换不匹配的解决方案

    本文主要介绍了C语言中类型转换不匹配的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-12-12
  • C++实现访问者模式的基础介绍

    C++实现访问者模式的基础介绍

    访问者模式表示一个作用于某对象结构中各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。对C++访问者模式相关知识感兴趣的朋友一起看看吧
    2021-09-09
  • C语言算法金手指摩尔投票法手撕绝大多数问题

    C语言算法金手指摩尔投票法手撕绝大多数问题

    这篇文章主要为大家介绍了C语言算法之金手指摩尔投票法手撕绝大多数问题的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-02-02
  • C++ string替换单个指定字符为其它字符问题

    C++ string替换单个指定字符为其它字符问题

    这篇文章主要介绍了C++ string替换单个指定字符为其它字符问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 一元多项式加法运算

    一元多项式加法运算

    今天小编就为大家分享一篇关于一元多项式加法运算,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • C语言 OpenCV实现柱面投影

    C语言 OpenCV实现柱面投影

    在做全景拼接的时候,为了保持图片中的空间约束与视觉的一致性,需要进行柱面投影,否则离中心图像距离越远的图像拼接后变形越大。本文将具体介绍一下这如何实现,需要的可以参考一下
    2021-12-12

最新评论