Wyswietlanie pierwszego elementu listy jednokierunkowej C

0

Czy istanieje sposob aby ominac wyswietlanie pierwszego elementu listy? chodzi o to ze w tym kodzie : http://4programmers.net/Pastebin/2835 funkcja, ktora ma zadanie wypisac elementy listy wypisuje rowniez pierwszy, ktory jest pusty. Czy jedynym rozwiazaniem jest wypelnienie pierwszego elementu w mainie?

1

To może w funkcji która wypisuje, zamiast:

aukcja *w=wsk;

Napisz:

aukcja *w=wsk->n;
1
marcin2010 napisał(a):

Czy jedynym rozwiazaniem jest wypelnienie pierwszego elementu w mainie?

Nie, nie jest, ale wg mnie to jest najbardziej porządane rozwiązanie. Ale jak dla mnie nie powinieneś robić tego w main ale w funkcji dodaj. Np mógłbyś ustawić domyślną wartość ceny na -1 (w realnym świecie nie jest to prawidłowa wartość) i sprawdzając tą wartość w funkcji dodaj rozpoznajesz czy nowy element dodać jako następny czy pierwszy. No i musiałbyś wtedy dodać zabezpieczenie przy pobieraniu ceny, żeby user nie mógł przypisać ujemnej ceny. Możesz też dodać flagę pod tytułem filled i domyślnie ustawiać ją na false. Jest jeszcze kilka innych możliwych rozwiązań, do wyboru do koloru.

0

Co do zabezpieczen typu cena nie moze byc ujemna to dopisze je pozniej. Mam jeszcze pytanie czym rozni sie wsk=malloc(sizeof(aukcja)); od wsk=(aukcja *)malloc(sizeof(aukcja)); bo bardzo czesto widze ta druga opcje. A no i jeszcze pytanie czy uzycie gets jest dobrym wyborem? Wydaje mi sie ze to niezbyt bezpieczne a nie znam innej bezpiecznej funkcji ktora moglaby pobrac ciag znakow wraz z bialymi(np nazwa: projekt z pp)

1
marcin2010 napisał(a):

... a nie znam innej bezpiecznej funkcji ktora moglaby pobrac ciag znakow wraz z bialymi(np nazwa: projekt z pp)
Instalacja TBrain by się przydała:

char *read(char *buff,size_t size)
  {
   int i,ch;
   for(i=0;(i<size)&&((ch=getchar())!=EOF)&&(ch!='\n');++i) buff[i]=ch;
   buff[i<size?i:size-1]=0;
   return buf;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1