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?
To może w funkcji która wypisuje, zamiast:
aukcja *w=wsk;
Napisz:
aukcja *w=wsk->n;
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.
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)
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;
}