我有一个200个性特征的节目,显示我分成几个部分,并试图将这些部分分成两组,或由一系列要点通过职能加以扼杀。 我可以主要成功地做到这一点,但当我通过描述特征和2个果园或点阵阵列来扼杀自己没有做的工作时。 当我印刷该功能中的2个阵列时,它显示一切都完美无缺,但当我主要印刷返回阵列时,它只印制了以下最后价值。
简化编码样本和产出如下:
void func(char *buffer, char **file_list)
{
/*split buffer into segments*/
Strcpy((*file_list + i), segment);
Printf(“i = %d file_list = %s
”,i, (*file_list + i)); /* this prints the segments perfectly*/
}
Main()
{
Func(buffer, file_list);
For(i=0;i<n;i++)
Printf(“i= %d,split lines in main is %s
”,i,(*file_list +i));
}
“func”内的印刷产出是:
Segment one
Segement two
……
Segment n
主要产出是:
Segment n
Segment n
…..
Segment n
请在下文中更详细地说明这一职能。 我假定你不需要看到变式声明清单。
请注意,我还试图将要点作为参考,以为如果缓冲是指最初的特征阵列,那么我会指出这一点,而不是临时性的。 但公认,我对一些临时变量没有了解。
Void func(char *buffer, char **file_list)
{
newline=strstr(buffer,"
");
while (newline != NULL && (newline-buffer)< READ_SIZE)
{
temp_var=newline;
newline=strstr(newline + 1,"
");
if( newline !=NULL )
{
strncpy((*file_list+i),temp_var,(newline-temp_var));
printf("i= %d, file_list is %s
",i, (*file_list+i));
}
}
}
Main()
{
Char *buffer = (char * ) malloc(200*sizeof(char));
Char **file_list= blah blah ….
/* put 200 char string in buffer*/
/*file_list is still empty call func to fill it up*/
Func(buffer,file_list);
For(i=0;i<n;i++)
printf("i= %d, file_list is %s
",i,(*file_list+i));
}
职能产出:
i=0 file list is "segment one"
i=1 file list is "segment two"
....
i=n file list is "segment n"
主要产出是:
i=0 file list is "segment n"
i=1 file list is "segment n"
....
i=n file list is "segment n"