【发布时间】:2016-12-10 18:27:26
【问题描述】:
我有一个服务器 - 客户端程序,我可以添加或删除用户。当达到最大用户数(10)时,删除一个用户时出现错误。
这是删除用户的部分功能:
int i;
int confirmacao = 0;
msg_t msg;
char cliname[10];
if (strlen(estrutura.id) == 3) {
for (i = 0; memoria->x[i].id[0] != '\0'; ++i) {
if (strcmp(estrutura.id, memoria->x[i].id) == 0) {
confirmacao = 1;
for (; memoria->x[i].id[0] != '\0'; ++i) {
memoria->x[i] = memoria->x[i + 1];
}
// I think the problem is with this memset
memset(memoria->x[i].id, '\0', sizeof(memoria->x[i].id));
printf("IA antes de decrementar: %i\n", memoria->ia);
memoria->ia--;
printf("Ia depois: %i\n", memoria->ia);
break;
}
}
} else {
...
}
memoria->ia 应该减一,我可以弄清楚为什么 memset 将其设置为零。
memoria 是这个结构的全局指针:
typedef struct mmap_uti_s {
uti_t x[NUTI];
int ia;
} mmap_uti_t;
而uti_t就是这个结构:
typedef struct uti_s {
char id[NDIG + 1];
char nome[NDIM + 1];
char portas[NPOR + 1];
} uti_t;
【问题讨论】:
标签: c