Portál AbcLinuxu, 2. listopadu 2025 10:18
int N, i, *p_i;
p_i= (int *) malloc(N * sizeof(int));
scanf("%d", &N);
for (i=0; i < N; i++){
scanf("%d", p_i+i);
printf("\n%d\n", *(p_i+i));
}
Tohle je cast kodu. Pamet se alokuje sparvne, delal sem test na NULL.
Nevite kde by mohl byt problem? Program spravne uklada hodnoty do pola, ale v momente kdy by mnel cyklus opustit vypise Segmentation fault a program ukonci.
Dik moc
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int N, i, *p_i;
scanf("%d", &N);
p_i = (int *) malloc(N * sizeof(int));
for(i = 0; i < N; i++)
{
scanf("%d", p_i + i);
printf("\n%d\n", *(p_i + i));
}
return 0;
}
Nechapu to.
Ja jsem skompiloval jeste jednou a ted to funguje. Ak vsak skompiluju znovu, tak to nejede a pak zas jede. Kompiloval jsem presne tento kod.
Takze se to uz z casti vyresilo. Ale proc raz jede, raz ne ?
Dekuji
Spatne jsem prepsal kod.
s g++ i Visual C++ to nepadá - možná by bylo lepší poslat větší část originálního kódu? Taky by se hodilo znát přesné hodnoty, na kterých to padá (když na "všech", tak aspoň jeden příklad - určitě si netestoval všechny možné vstupy, těch je nekonečně mnoho).
vim ~/.emacsprintf ("Zadej počet prvků: ");, printf ("Zadej %i. prvek: ", i);
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.