я следующая проблема с кодом, это сброшенные в этой функции:Динамические структуры
int EliminarRelacion() {
struct amigos *ancla=primero, *ant=NULL;
char user1[12], user2[12];
int i=1;
printf("Nombre usuario 1: "); scanf("%s", &user1);
printf("Nombre usuario 2: "); scanf("%s", &user2);
while(ancla!=NULL) {
if(i>=2) { //Guarda la posición anterior a ancla
if(i==1)
ant = primero;
else
ant = ant->siguiente;
}
if(!(strcmp(ancla->usuario1, user1) && strcmp(ancla->usuario2, user2))) {
ant->siguiente = ancla->siguiente;
//free(ancla->usuario1);
//free(ancla->usuario2);
free(ancla);
printf("Eliminado...\n");
return 1;
}
ancla = ancla->siguiente;
i++;
}
if(i==1)
printf("%c NO EXISTEN AMISTADES ACTUALMENTE %c\n", 16, 17);
return 0;
}
Этот код призван устранить (бесплатно динамическую память) где-то в структуре, указанной пользователем клавиатуры.
Итак, в чем проблема? – OldProgrammer
В функции int EliminarRelacion() программа падает, чтобы найти элемент, который нужно удалить. – user3042068
Кодовый фрагмент 'if (i> = 2) { if (i == 1) ant = primero; else ant = ant-> siguiente; } 'своеобразен; строка 'ant = primero;' никогда не будет выполнена, потому что 'i' не 1, если она' = = 2'. –