gpt4 book ai didi

c - 添加多个患者 C 指针

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:12 25 4
gpt4 key购买 nike

我的指针有问题。我正在尝试将多个患者添加到我的列表中。我知道该怎么做,只是代码给我段错误。

这里是有问题的代码:

void addPatient(int patientID) {
Chartptr patients_chart;

patients_chart = getChart(patientID);

// if patient wasn't found, add new patient
if (patients_chart == NULL) {
Chartptr new_chart;

// allocate and initialize new patient
new_chart = (Chartptr)malloc(sizeof(Chart));
new_chart->id = patientID;
new_chart->buffer = NULL;

// insert new patient into list
new_chart->next = patientList;
patientList = new_chart;

// test print patient data
printf("%d %d\n", new_chart->id, patientList->id);
}
}

/*
* getChart: given a patientID, return a pointer to their Chart
*/
Chartptr getChart(int patientID) {
Chartptr foundChart = NULL;

// find the patient chart with id
foundChart = patientList;
if (foundChart != NULL) {
while(foundChart->id != patientID) {
foundChart = foundChart->next;
}
}

return foundChart;
}

结构如下:

/*
* Patient's health chart: ID + linked list of health type readings
*/
typedef struct chartEntry* Chartptr; /* pointer to a Chart */

typedef struct chartEntry{
int id; /* patient ID */
CBuffptr buffer; /* pointer to first health type buffer */
Chartptr next; /* pointer to next patient */
}Chart;


extern Chartptr patientList; /* global declaration for start of the patient chart linked list */

我正在向添加的患者发送 id,它是我从 main 获得的,我知道它非常有效。但是出于某种原因,当 patientList 不为 NULL 并且它进入 while 循环时,它会在 addPatient 的其余部分中出现 seg 错误或在 while 循环之后。我不知道哪个。感谢您的帮助。

最佳答案

我认为这是你的错误:

while(foundChart->id != patientID) {
foundChart = foundChart->next;

您正在更新 foundChart 但如果它已变为 NULL,则从不检查 while 循环,以防没有 patientID匹配。

关于c - 添加多个患者 C 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20278312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com