gpt4 book ai didi

具有 char 指针类型的 C 结构无法在函数中插入值

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

此代码可以在 Windows 上使用 Codeblocks 编译良好,当我按 1 运行函数“Aggiungi”(插入)时,我只能插入姓名、姓氏以及当我在姓氏后按 Enter 时(所以当我应该插入电话时) ),它崩溃了。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100

typedef struct rubrica
{
char *nome;
char *cognome;
char *tel;
} rubrica;

void aggiungi(rubrica *contatto, int ncont);

int main(void)
{
rubrica *contatto[MAX];
int act, ncont=0;

do
{
printf("1)AGGIUNGI\n");
printf("2)VISUALIZZA\n");
printf("0)ESCI\n");
scanf("%d", &act);

if(act==1)
{
aggiungi(*contatto, ncont);
ncont++;
}
} while (act!=0);

return 0;
}

void aggiungi(rubrica *contatto, int ncont)
{
printf("\n________________\n");

contatto[ncont].nome=malloc(21*sizeof(char*));
printf("\nNome: ");
scanf("%s", contatto[ncont].nome);

contatto[ncont].cognome=malloc(21*sizeof(char*));
printf("\nCognome: ");
scanf("%s", contatto[ncont].cognome);

contatto[ncont].tel=malloc(12*sizeof(char*));
printf("\nTelefono: ");
scanf("%s", contatto[ncont].tel);


}

最佳答案

您不为 rubrica 分配内存,只为指向它的指针分配内存。这会引发无效的写内存访问。你可以尝试改变一下

   rubrica *contatto[MAX];

进入

   rubrica contatto[MAX];

   aggiungi(*contatto, ncont);

进入

   aggiungi(contatto, ncont);

关于具有 char 指针类型的 C 结构无法在函数中插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41281139/

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