C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C语言定义字符串数组

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

作者:嵌入式学习和实践

在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语言定义字符串数组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文