我想弄清楚如何创建一个字符串数组(考虑到我知道每个字符串的最大长度)。
char** strings = NULL;
strings = malloc (5*sizeof(char*));
一旦我这样做了,我怎么才能填充数组而不需要分别分配每个字符串?假设我知道字符串的最大长度是20,我该怎么设置它?
在分配字符串后,我希望执行以下操作:
strings[0] = "string";
strings[1] = "another string";
等
由于
答案 0 :(得分:1)
您可以声明指向char
的指针数组,然后为这些指针指定字符串文字
char *strings[5];
strings[0] = "string";
strings[1] = "another string";
/* ... */
但请注意,这些字符串将是不可变的。
您还可以使用char
数组
char strings[5][20]; // As you know max length of string is 20
strcpy(strings[0], "string");
strcpy(strings[1], "another string");
/* ... */
后者的一个优点是字符串是可变的。
答案 1 :(得分:0)
如果您知道每条线的最大尺寸,并且您知道最大线数,则可以简单地定义一个二维的字符数组,即char arr[5][20+1]
。然后,您将拥有最多5行的保留空间,每行最多包含20个字符(+ null char)。
您还可以定义表示此类行的类型别名(如果您愿意):
#define MaxLineLength 20
typedef char Line[MaxLineLength+1];
int main() {
Line input = { 0 };
scanf("%20s", input);
Line a[5] = { 0 };
strcpy(a[0], input);
strcpy(a[1], "string1");
return 0;
}