要想知道这个,你应该尝试了解输入。如果您确信5人只有9个字段(单个字符数据),那么您应该将其设置为char input[5][9]
。
如果您认为将来可能会有更多的信息字段超过9,那么您可以使用更高的值,例如char input[5][256]
。但是,如果字段的数据稀疏,这会浪费很多空间。这是内存静态分配
所以,当你不能确定每个人的字段数第三个选项,是分配内存中动态like--
char* input[5];
input[0] = malloc(sizeof(char) * 100); // space of 100 chars
在最后一种情况下
这里,存储器是在运行时而不是编译时给出的。您还可以从用户输入中获取大小并将其用于为字段分配内存。
char* input[5];
int size = 0;
scanf("%d",&size);
input[0] = malloc(sizeof(char) * size);
此外,如果您需要存储字段,其中每个字段需要多个字符,那么您应该创建一个结构。
struct person
{ char name[30]; // memory could be assigned dynamically or statically
char field1[30];
char field2[30];
...
};
来源
2013-10-01 01:29:20
hrv
请注意,这些方法,你应该始终确保用户输入将适合分配的内存,即在第一种情况下进入'person.name'超过49个字符会导致不确定的行为的名称 – Pankrates
@Pankrates很好,谢谢。我忘了将它添加到我的答案中。 – streppel