c语言写一个函数帮我初始化这个数组 gCliAuthTable[3] = { {CLI_LEVEL_DEBUG, "admin"}, {CLI_LEVEL_GUEST, "guest"}, {CLI_LEVEL_MANUFACTORY, "test"} }
时间: 2024-12-11 10:01:35 浏览: 8
在C语言中,你可以使用这样的函数来初始化一个固定大小的数组,比如 `gCliAuthTable`。这是一个静态数组,用于存储结构体类型的元素:
```c
#include <stdio.h>
// 假设有一个名为CliLevel的枚举类型和一个结构体AuthEntry
typedef enum { CLI_LEVEL_DEBUG, CLI_LEVEL_GUEST, CLI_LEVEL_MANUFACTORY } CliLevel;
typedef struct {
CliLevel level;
char username[16]; // 假设username字段最多需要16个字符
} AuthEntry;
// 定义初始化数组的函数
void initializeAuthTable(AuthEntry gCliAuthTable[]) {
gCliAuthTable[0].level = CLI_LEVEL_DEBUG;
strcpy(gCliAuthTable[0].username, "admin");
gCliAuthTable[1].level = CLI_LEVEL_GUEST;
strcpy(gCliAuthTable[1].username, "guest");
gCliAuthTable[2].level = CLI_LEVEL_MANUFACTORY;
strcpy(gCliAuthTable[2].username, "test");
}
int main() {
AuthEntry authTable[3] = {0}; // 初始化为0,防止未初始化导致的未定义行为
initializeAuthTable(authTable);
// 打印数组内容验证初始化
for (int i = 0; i < sizeof(authTable) / sizeof(authTable[0]); i++) {
printf("Level %d: Username - %s\n", authTable[i].level, authTable[i].username);
}
return 0;
}
```
在这个例子中,`initializeAuthTable` 函数接受一个 `AuthEntry` 类型的指针作为参数,并直接修改数组的内容。在 `main` 函数里,我们先预分配数组并将其初始化为0,然后调用这个函数。
阅读全文