Portál AbcLinuxu, 1. května 2025 11:04
int strlen(char *a){ int i=0; while(*a) { ++i; ++a; } return i; }
ech.. samozřejmě. úloha zněla ale "nejméně znaků", nikoli nejvýkonnější. Prostě toto není otázka z reálného světa, a nemá smysl se ptát jestli úloha "najděte nejkratší řešení" má smysl, stejně jako nemá smysl mnoho lidské činnosti.
já vím že rekurze je v tomto případě úplná blbost. Nicméně musíš uznat, že pomocí rekurze je to řešení kratší než jiná, běžnější řešení.
char *strcpy(char *d, const char *s) { char *ret = d; while ((*d++ = *c++)) ; return ret; }
P. S. K ,,sestřesení'' kódu do jedné řádky se uchylovat nebudu .
P. P. S. Obě funkce se obvykle implementují v asembleru, ,,výkonný kód'' je na i386 tvořen pomocí jedné prefixované instrukce (+ nějaký ten vstup do funkce, cld a leave).
int strlen(char *str) { int i=0; for(;*(str+i);i++); return i; }
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.