我想知道如何为每个数组创建一个包含2个字符串的动态数组。而且我不确定如何。我知道如何创建一个字符串数组,但不是“n”维度之一,我想知道如何。
以下是我的代码的一些部分,它们目前只是一个字符串数组:
首先,我在一个结构中声明了我的数组:
overwrite = TRUE
然后我在第一次注册时初始化它:
typedef struct{
char bloqueCedula[7];
short bloqueDia;
char **bloqueLibrosPrestados;//This is the array i want to modify
}RegistroControl;
在上面的代码中,我创建了长度为7的每个字符串,因为我已经知道了我需要复制的长度,即6。
这就是我不断发展的方式:
void primerRegistro(RegistroArchivo regArch, RegistroControl *regControl) {
strcpy(regControl->bloqueCedula, regArch.cedula);
regControl->bloqueDia = regArch.dia;
regControl->bloqueLibrosPrestados = malloc(cont * sizeof(regControl->bloqueLibrosPrestados));
regControl->bloqueLibrosPrestados[0] = malloc(7 * sizeof(char));
strcpy(regControl->bloqueLibrosPrestados[0], regArch.codigoLibro);
imprimirCabecera();
//printf("%s\n", regControl->bloqueLibrosPrestados[cont-1]);
}
我想知道如何在7长度的旁边添加另一个2长度的字符串。这段代码是从文件读取直到达到EOF的代码的一部分,这就是为什么我使用了一个“cont”的计数器。
答案 0 :(得分:0)
你有char**
。
假设a
。为a
分配一些内存。
a= malloc(sizeof(char*)*10);
if( a == NULL)
{
fprintf(stderr,"%s","error in malloc");
exit(1);
}
现在,对于a
的每个位置,您只对char
执行相同的操作。
a[i]= malloc(sizeof(char)*100);
if( a[i] == NULL)
{
//...
}
完成后释放它们。
free(a[i]); //for each i.
free(a);
a=NULL;
现在这是2维
现在我不知道你什么时候需要更多。这总是可以延长。
char *** aa;
但不需要它。 {read this}
如果您需要,那么您应该考虑一下您的数据表示。
对于n维,你可以这样做: -
char **...n...** complicated= malloc(sizeof(char**...n...>**)*N1);
// malloc check
for(int i=0;i<N1;i++)
complicated[i]= malloc(sizeof(char**...(n-1)...**)*N2);
...