我在尝试从旧的结构创建新的链接列表时遇到了一些麻烦。新链表的基础是,属于用户指定的特定品种的狗将被添加到新列表中,旧列表中的所有狗将不会被转移。我没有问题让一只狗进入列表但我认为当我尝试添加多只狗时,我的代码出了问题。我假设当我创建指向列表结果的第二个临时列表时,当我添加到它时它会修改结果,但似乎并非如此。任何方向将不胜感激。
代码 class HelpPage extends React.Component {
constructor(props) {
super(props);
this.state = {
panelIndex: 0
};
}
getBtnId = (e) => {
if(e.target && e.target.nodeName == "BUTTON") {
console.log(e.target);
this.setState({
panelIndex: Number(e.target.id)
});
}
};
render() {
return (
<div className="container">
<HelpMenu
getBtnId={this.getBtnId}
/>
<HelpPanels
panelIndex={this.state.panelIndex}
/>
</div>
)
}
}
const HelpMenu = ({ getBtnId }) => {
return (
<div
className="btnGroup"
onClick={getBtnId}
>
<button id="0">Option 1</button>
<button id="1">Option 2</button>
<button id="2">Option 3</button>
<button id="3">Option 4</button>
</div>
);
};
class HelpPanels extends React.Component {
render() {
const panels = [
<HelpPanel1 />,
<HelpPanel2 />,
<HelpPanel3 />,
<HelpPanel4 />
];
const correctPanel = panels[this.props.panelIndex];
return (
<div className="panel-box">
{correctPanel}
</div>
);
}
}
const HelpPanel1 = () => (
<h1>Panel for Option 1</h1>
);
const HelpPanel2 = () => (
<h1>Panel for Option 2</h1>
);
const HelpPanel3 = () => (
<h1>Panel for Option 3</h1>
);
const HelpPanel4 = () => (
<h1>Panel for Option 4</h1>
);
ReactDOM.render(
<HelpPage />,
document.getElementById('root')
);
中的最后一个函数是我似乎遇到问题的函数。其他一切都按预期工作。我相信else语句是我似乎出错的地方,因为当只有一只狗匹配该品种时,它似乎能够从它们那里制作清单。
struct container* list_of_breed(char* breed)
答案 0 :(得分:0)
我注意到以下问题。你有几个未初始化的成员,你使用它们。因此,您的程序具有未定义的行为。
第一个
在add_doc
中,您没有初始化成员核对of the newly malloc'ed
struct dog`。添加
tempDog->checkups = NULL;
行后
strcpy(tempDog->breed, breed);
第二个
在list_of_breed
中,您在使用next
成员之前未设置cont_dog
成员。
添加行
cont_add->next = NULL;
之后
cont_add->dog = dog_add;
未来问题
在list_of_breed
中,您有一行:
dog_add->checkups = temp->dog->checkups;
这是checkups
的浅表副本。为了避免free
checkups
多次checkups
,您需要制作{{1}}的深层副本。