所以我试图通过一个简单的程序来解决这个问题:
#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
我是否遗漏了一些明显的东西,或者我是否需要做一些更复杂的事情来为字符串创建数组?
答案 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>
。