我如何创建一个数组来存储字符串?

时间:2015-03-25 20:10:45

标签: c

所以我试图通过一个简单的程序来解决这个问题:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 int main()
{
    char a[]="lalala";
    char b[]="bababa";
    char c[]="nanana";
    char d[3][10];

    d[0][20]=*a;
    d[1][20]=*b;
    d[2][20]=*c;
    printf("%s -- %s -- %s", d[0], d[1], d[2]);
    return 0;
}

每当我运行它时,就会出现这种情况:

( -- ╡■   :A&w═l&wÉ∟@ -- l&wÉ∟@

我要做的就是打印出来 LALALA BABABA nanana

我是否遗漏了一些明显的东西,或者我是否需要做一些更复杂的事情来为字符串创建数组?

4 个答案:

答案 0 :(得分:3)

尝试使用strcpy而不是通过解除引用来分配它们。

答案 1 :(得分:1)

存储整个字符串使用字符串副本。

char a[]="lalala"; 
char c[]="nanana";
char d[3][10];

strcpy(d[0],a);
strcpy(d[1],b);
strcpy(d[2],c);

printf("%s -- %s -- %s", d[0], d[1], d[2]);

答案 2 :(得分:1)

声明char a[] = "lalala";创建一个字符数组,其中名称a是存储第一个字符的内存地址的别名。

要创建字符串数组,可以创建一个字符指针数组,每个数组都包含单个字符数组起始位置的内存地址。

#include <stdio.h>

int main(void)
{

    /* Store the starting address of each character array in an array of
     * character pointers */

    char alpha[] = "Alpha";  /* Array of characters */
    char beta[] = "Beta";
    char gamma[] = "Gamma";

    char *char_ptr_array[3]; /* Array of pointers to characters */

    char_ptr_array[0] = &alpha[0]; 
    char_ptr_array[1] = beta; 
        /* This does the same thing since the array's name is an alias
         * for the address of the first element */
    char_ptr_array[2] = gamma;

    printf("%s, %s, %s\n", char_ptr_array[0], char_ptr_array[1], char_ptr_array[2]);

    return(0);
}

您也可以像这样进行分配,这是做同样事情的简写:

#include <stdio.h>

int main (void)
{
    char *alphabet[3] = { "Alpha", "Beta", "Gamma" };

    printf("%s, %s, %s\n", alphabet[0], alphabet[1], alphabet[2]);

    return(0);
}

答案 3 :(得分:0)

您可以使用字符串数组:

std::string test[20];

避免使用#include <string.h>;仅使用#include <string>