![](/img/trans.png)
[英]how to take multiple strings as input and store them in a 2d array using c?
[英]How store multiple string or create an array of strings in C, by using 1D array?
有什么办法可以在一个数组中获取多个字符串?
#include <stdio.h>
int main (void)
{
char str[4] = {"Linux", "Ubuntu", "Arch", "Void"};
for (int i = 0; i < 4; i++) {
printf("%d", str[i]);
printf("%s", str[i]);
}
printf("%s", str);
}
我只是想做。 但是没明白吗?
如何使用一维数组在C中存储多个字符串或创建字符串数组?
简短的答案是: 您不能
C语言中的字符串本身就是一个char数组(带有零终止),因此无法在一维数组中包含多个字符串。
您可以将其设为2D数组,例如:
int main()
{
// Make a 2D array to store
// 4 strings with 9 as max strlen
char str[4][10] = {"Linux", "Ubuntu", "Arch", "Void"};
for (int i=0; i<4; ++i) printf("%s\n", str[i]);
return 0;
}
另一种方法是使用一维char指针数组来表示字符串文字 ,例如:
int main()
{
// Make a 1D array to store
// 4 char pointers
char *str[4] = {"Linux", "Ubuntu", "Arch", "Void"};
for (int i=0; i<4; ++i) printf("%s\n", str[i]);
return 0;
}
但请注意,字符串未保存在数组中。 编译器将字符串放置在内存中的某个位置,而数组仅保存指向这些字符串的指针。
还要注意,在第二个示例中,您稍后不能在程序中修改字符串。 在第一个示例中,允许您在初始化之后更改字符串,例如,进行strcpy(str[0], "Centos");
顺便说一句:这可能很有趣字符串文字常量吗?
可以将多个字符串存储在一维数组中-问题是访问超出初始字符串的任何内容。 例如:
char strs[] = “foo\0bar\0bletch\0blurga”;
一维数组strs
包含4个字符串,但是如果将strs
传递给任何库函数,则仅使用”foo”
。我们需要在strs
维护一个单独的指针数组,以访问除第一个字符串之外的任何内容:
char *ptrs[] = {strs, &strs[4], &strs[8], &strs[15]};
如果您需要字符串在内存中是连续的,那么这是一个有效的方法,但是它很麻烦,如果您需要更新其中的任何一个字符串,都会带来极大的痛苦。 最好使用2D阵列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.