定义一个结构体描述病人病历信息(病历号,姓名,症状);完成如下功能:
时间: 2024-09-10 09:30:29 浏览: 22
首先,我们定义一个结构体来描述病人的病历信息。结构体中将包含病历号、姓名和症状三个字段。然后,我将向您展示如何实现所需的功能。
以下是病历信息结构体的定义:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义病历信息结构体
typedef struct {
char medical_id[20]; // 病历号
char name[50]; // 姓名
char symptoms[100]; // 症状
} MedicalRecord;
// 函数声明
void printMedicalRecord(const MedicalRecord *record);
MedicalRecord* createMedicalRecord(const char *id, const char *name, const char *symptoms);
// 打印病历信息的函数实现
void printMedicalRecord(const MedicalRecord *record) {
if (record == NULL) {
printf("病历记录为空。\n");
return;
}
printf("病历号: %s\n", record->medical_id);
printf("姓名: %s\n", record->name);
printf("症状: %s\n", record->symptoms);
}
// 创建病历信息的函数实现
MedicalRecord* createMedicalRecord(const char *id, const char *name, const char *symptoms) {
// 为病历信息分配内存
MedicalRecord *record = (MedicalRecord *)malloc(sizeof(MedicalRecord));
if (record == NULL) {
printf("内存分配失败。\n");
return NULL;
}
// 复制数据到病历信息结构体
strncpy(record->medical_id, id, sizeof(record->medical_id) - 1);
record->medical_id[sizeof(record->medical_id) - 1] = '\0'; // 确保字符串以null字符结尾
strncpy(record->name, name, sizeof(record->name) - 1);
record->name[sizeof(record->name) - 1] = '\0';
strncpy(record->symptoms, symptoms, sizeof(record->symptoms) - 1);
record->symptoms[sizeof(record->symptoms) - 1] = '\0';
return record;
}
// 释放病历信息内存的函数实现(未在题目要求中提及,但良好实践应包含此功能)
void freeMedicalRecord(MedicalRecord *record) {
if (record != NULL) {
free(record);
}
}
int main() {
// 示例:创建并打印一个病历记录
MedicalRecord *record = createMedicalRecord("MED12345", "张三", "感冒");
if (record != NULL) {
printMedicalRecord(record);
freeMedicalRecord(record); // 释放内存
}
return 0;
}
```
这段代码定义了一个`MedicalRecord`结构体,并提供了创建和打印病历记录的函数。`createMedicalRecord`函数用于创建一个新的病历记录,而`printMedicalRecord`函数则用于打印病历记录的内容。我还提供了一个`freeMedicalRecord`函数,这在良好的实践当中是一个重要的步骤,用于释放动态分配的内存。