请指出这段代码中的错误static char *student[MAX_STUDENT_NUM] = {NULL}; int find_student_id_by_name(const char *name) { int = 0; for ( i = 0 ; student[i] != NULL && i< MAX_STUDENT_NUM ; ++i ){ if ( 0== strcmp (student[i], name )) return i; } return -ERR_NOT_FIND; }
时间: 2024-01-11 12:02:51 浏览: 71
这段代码中有两个错误:
1. 在函数 `find_student_id_by_name` 中,变量 `i` 没有声明类型,应该改为 `int i = 0;`。
2. 在 strcmp 函数的比较中,应该比较的是 `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 (0 == strcmp(student[i], name))
return i;
}
return -ERR_NOT_FIND;
}
```
相关问题
请指出这段代码的错误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; }
这段代码没有错误,其功能是在 `student` 数组中查找指定名字的学生,如果找到了则返回该学生的下标,否则返回 -ERR_NOT_FIND。
该代码定义了一个全局的指针数组 `student`,数组中的元素是指向 `char` 类型的指针,数组长度为 `MAX_STUDENT_NUM`。同时,该代码定义了一个函数 `find_student_id_by_name`,该函数接收一个指向 `char` 类型的指针 `name` 作为参数,用于指定要查找的学生的名字。该函数定义了一个变量 `i` 作为循环计数器,用于遍历 `student` 数组中的元素,查找指定名字的学生。如果找到了该学生,则返回该学生在数组中的下标;否则返回 -ERR_NOT_FIND。
需要注意的是,该代码中的 `MAX_STUDENT_NUM` 应该是一个合法的整数常量,且 `ERR_NOT_FIND` 应该是定义在某个头文件中的一个预定义常量。
请指出下面代码中的错误 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; }
代码中有如下错误:
1. 第一行中,应该使用数组来存储学生的姓名,而不是指针数组。应该将 char *student[MAX_STUDENT_NUM] 改为 char student[MAX_STUDENT_NUM][MAX_NAME_LEN]。
2. 第一行中,赋值语句中不应该有括号,应该改为等号。
3. 第六行中,应该先判断 i 是否小于 MAX_STUDENT_NUM,再判断 student[i] 是否为 NULL,否则可能会出现数组越界的问题。
4. 第七行中,strcmp 函数返回值为 0 表示两个字符串相等,应该将判断条件改为 if (strcmp(student[i], name) == 0)。
5. 第九行中,-ERR_NOT_FIND 应该改为 -ERR_STUDENT_NOT_FOUND。
修改后的代码如下:
```
static char student[MAX_STUDENT_NUM][MAX_NAME_LEN] = {0};
int find_student_id_by_name(const char *name) {
int i = 0;
for (i = 0; i < MAX_STUDENT_NUM && student[i][0] != '\0'; ++i) {
if (strcmp(student[i], name) == 0) {
return i;
}
}
return -ERR_STUDENT_NOT_FOUND;
}
```
阅读全文