• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Język C - dlaczego otrzymuje taki wynik poza pętlą?

Object Storage Arubacloud
0 głosów
291 wizyt
pytanie zadane 3 stycznia 2020 w C i C++ przez damiang19 Nowicjusz (220 p.)

Witam. Chciałbym się dowiedzieć co jest nie tak z tym kodem?? Chodzi mi o to że gdy spróbuje wypisać element tablicy tik[0] lub tik[1] po zakonczeniu dzialania petli to są one takie same jak trzeci(ostatni element) tik[2]. 

W notatniku mam 3 wyrazy oddzielone przecinkami np:  motor,pika,schody,

int main() {
char tab[10];
char *tik[5];
char zmienna;
int i,j;
FILE *fp;
if((fp=fopen("dane.txt","r"))== NULL)printf("cos poszlo nie tak");
else printf("Dobra robota\n");

for (j=0; j<3; j++){
for(i=0; i<10; i++){
zmienna = getc(fp);
if(zmienna == ',')break;
tab[i] = zmienna;
}
tik[j] = tab;

printf("%s\n", tik[j]);
}printf("%s",tik[0]);

return 0;
}

 

2 odpowiedzi

+1 głos
odpowiedź 3 stycznia 2020 przez Eryk Andrzejewski Mędrzec (164,260 p.)
wybrane 3 stycznia 2020 przez damiang19
 
Najlepsza

Problem polega na tym, że wykonując instrukcję tik[j] = tab, tylko przypisujesz adres tablicy tab do poszczególnych elementów tablicy tik, a sama tablica tab ulega nadpisaniu w kolejnych iteracjach pętli.

Możesz spróbować zadeklarować tik jako tablicę dwuwymiarową (wtedy tablica tab nie będzie potrzebna). Pamiętaj też o tym, aby zakończyć napisy bajtem 0 (czyli ostatnia komórka wiersza tablicy musi być zarezerwowana).

komentarz 3 stycznia 2020 przez damiang19 Nowicjusz (220 p.)
Dzięki za rozjaśnienie. Ratujesz życie :D
+1 głos
odpowiedź 3 stycznia 2020 przez Radfler VIP (101,030 p.)
tik[j] = tab; // linia 16

W każdym obiegu pętli przypisujesz do j-tego elementu tablicy tik ten sam wskaźnik (wskaźnik na tablicę tab). Powinieneś użyć dynamicznej alokacji lub ewentualnie tablicy tablic znaków (tablicy dwuwymiarowej).

Podobne pytania

0 głosów
1 odpowiedź 195 wizyt
0 głosów
2 odpowiedzi 503 wizyt
pytanie zadane 12 grudnia 2018 w Java przez must Bywalec (2,980 p.)
0 głosów
1 odpowiedź 123 wizyt
pytanie zadane 17 lutego 2018 w Java przez konrad99 Gaduła (4,090 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...