我在大约3个小时前遇到了分段故障问题,而且我并没有真正弄清楚原因。我试图将内存分配给terminos(struct),但我不能。我希望你能帮助我
#include<stdio.h>
#include<stdlib.h>
typedef struct termino
{
int exponente;
float cociente;
} termino;
typedef struct polinomio
{
termino* polinomio;
int size;
} polinomio;
main()
{
int size_;
termino* terminos;
polinomio *polinomio_;
polinomio_ = malloc(sizeof(polinomio));
printf("%d",(sizeof(polinomio_)*2));
printf("Bienvenido al cálculo de operaciones usando 1 polinomio.\n");
printf("Ingrese la cantidad de términos que tendrá el polinomio.");
scanf("%d",size_);
//assigning memory for terminos.
terminos =(termino*) malloc(sizeof(termino) * size_);
答案 0 :(得分:1)
这里的主要问题是
scanf("%d",size_);
更改为
scanf("%d",&size_);
因为,scanf()
需要一个指向数据的类型参数。
相关,来自C11
标准,章节§7.21.6.2,(强调我的)
d
匹配可选的带符号十进制整数,其格式与 期望
strtol()
函数的主题序列,其值为10
,用于基本参数。 相应的参数应为指向有符号整数的指针。
除此之外,
main()
的推荐签名为int main(void)
。sizeof
的正确格式说明符为%zu
。malloc()