Portál AbcLinuxu, 12. května 2025 07:05
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 ~/.emacs
printf ("Zadej počet prvků: ");
, printf ("Zadej %i. prvek: ", i);
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.