在我的程序中,我使用了一个指针数组作为结构变量来获取用户的名字和第二个名字。
以下是我的函数调用语句:
ret_val = update_person(&ptr_person[person_index],f_name,s_name);
其中ptr_person[SIZE]
是指针变量,f_name
和s_name
是字符数组变量。
以下是name_ret
为int
的函数定义:
name_ret update_person(person_name_et **person,char *first_arg,char *second_arg)
{
int val = SUCCESS, val1 = SUCCESS,val2= SUCCESS;
int f_len = sizeof(first_arg);
int s_len = sizeof(second_arg);
val2 = remove_newline(first_arg);
val1 = remove_newline(second_arg);
val = allocate_person(person, f_len, s_len);
if((val && val1) == SUCCESS)
{
(*person)->first_name = first_arg;
(*person)->second_name = second_arg;
return SUCCESS;
}
else
{
return FAILURE;
}
}
代码中的问题是它在实例中工作正常,但是当下次迭代调用该函数时,ptr_Person[0]
被替换为ptr_person[1]
,如果我们有5个实例,则所有5个变量都被替换按最后的价值观。