gpt4 book ai didi

c - 动态结构

转载 作者:行者123 更新时间:2023-11-30 15:41:10 25 4
gpt4 key购买 nike

我的代码存在以下问题,该问题已在此函数中删除:

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;

}

此代码旨在消除用户键盘指示的结构中的某个位置(释放动态内存)。

最佳答案

我看到的你的代码的问题是,

printf("Nombre usuario 1: "); scanf("%s", &user1);
^--------------Here
printf("Nombre usuario 2: "); scanf("%s", &user2);
^--------------Here

scanf 函数获取变量的地址,并且您正在尝试输入字符串。通过提及数组 user1user2 的名称,您将获得地址。但是您将 &user1&user2 作为参数传递给 scanf 函数。

如果查找要删除的项目的逻辑正确,并且您更改了代码

printf("Nombre usuario 1: "); scanf("%s", user1);
printf("Nombre usuario 2: "); scanf("%s", user2);

应该可以。

关于c - 动态结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20602834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com