8.请指出下面代码中的错误 static char *student[MAX_STUDENT_NUM] = {NULL}; int find_student_id_by_name (const char *name) { int i = 0; for (i = 0; student[i] != NULL && i < MAX_STUDENT_NUM; ++i){ if (0 == strcmp(student[i], name)) return i; } return -ERR_NOT_FIND; }
时间: 2023-12-03 12:45:58 浏览: 78
datatype-transform.rar_C++ CString CHAR_CString_char int 转换_char
代码中存在两个错误:
1. `student[i]` 是一个 `char*` 类型的指针,应该与 `name` 进行比较,而不是与 `0` 进行比较。
2. 在比较 `student[i]` 和 `name` 之前,应该先判断 `student[i]` 是否为 NULL,否则可能会出现空指针异常。
下面是修改后的代码:
```
static char *student[MAX_STUDENT_NUM] = {NULL};
int find_student_id_by_name (const char *name) {
int i = 0;
for (i = 0; i < MAX_STUDENT_NUM && student[i] != NULL; ++i) {
if (strcmp(student[i], name) == 0)
return i;
}
return -ERR_NOT_FIND;
}
```
其中,`strcmp` 函数用于比较两个字符串是否相等。
阅读全文