• 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ą?

Cloud VPS
0 głosów
461 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ź 317 wizyt
0 głosów
2 odpowiedzi 934 wizyt
pytanie zadane 12 grudnia 2018 w Java przez must Bywalec (2,980 p.)
0 głosów
1 odpowiedź 156 wizyt
pytanie zadane 17 lutego 2018 w Java przez konrad99 Gaduła (4,090 p.)

93,459 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 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

Kursy INF.02 i INF.03
...