我的代码有一个奇怪的问题: 我有一个生成动态结构数组的函数,只需要一个 int 大小作为参数。
在我尝试只添加一个 scanf("d";&size) 之前,它运行良好;选择我的数组的大小,不明白为什么我会出现段错误。
注意:如果我删除包含 scanf 的行,编译没有问题
pokemon_t * createPkmDatabase( int taille){
printf("taille %d",taille);
pokemon_t *tableau=malloc(sizeof(pokemon_t)*taille);
...
...
}
int main(){
/*"taille" means size in french */
int taille=5;
printf("Saisir taille : ");
scanf("%d",&taille); /* <-- BREAKS EVERYTHING */
printf("valeur de taille : %d\n ",taille);
pokemon_t *database=createPkmDatabase(taille);
}
我不明白为什么用简单的 scanf 改变“taille”的值会改变任何值。
它甚至似乎没有进入函数 bc 它甚至没有打印大小的值
显示的代码没有错误。
一些备注:
size_t
)scanf
和 malloc
typedef struct {
int x,y,z;
}pokemon_t;
pokemon_t * createPkmDatabase(size_t taille){
printf("taille %d",taille);
pokemon_t *tableau=malloc(sizeof(*tableau)*taille);
return tableau;
}
int main(){
/*"taille" means size in french */
size_t taille;
printf("Saisir taille : ");
if(scanf("%zu",&taille) == 1)
{
printf("valeur de taille : %zu\n ",taille);
pokemon_t *database=createPkmDatabase(taille);
if(database)
{
printf("\nAllocation OK\n");
}
else
{
printf("\nAllocation FAILED\n");
}
free(database);
}
}