我正在用C编写此程序,该程序可获取联系信息。我正在将struct
中的struct
的指针传递给获取地址信息的函数,但是当将信息扫描到指针位置时,出现调试错误。
让我感到困惑的是,当功能先验功能只是获取名称信息而不是地址信息而做几乎相同的事情时,为什么在该功能内给我一个错误。
并且不,我没有在上一个函数中为&
使用scanf
。
这是我的代码
void getAddress(struct Address* address)
{
//Street Number
do //validate the street number
{
printf("Please enter the contact’s street number: ");
scanf("%d", address->streetNumber); //<----where the error is
} while (address->streetNumber <= 0);
clearIS(); //clears input stream
简而言之,您应该添加&(address->streetName)
,一切都会正常进行。
此行为的主要原因是scanf
希望您将其传递给指向内存中应写入输入的位置的指针。
在您当前的代码中,您说到scanf
,将32位用户信息写入以address->streetName
开头的地址的内存中,这不是您想要的。
与address->streetName
的相同功能可以正常工作,因为我想您将一个指向char数组的指针传递给了scanf
。因为address->streetName
在您的结构中定义为char*
或char[N]
类型。