Portál AbcLinuxu, 30. října 2025 17:18
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.