
FelipeAbella
(usa Debian)
Enviado em 26/11/2007 - 19:18h
Acho que ambos estao equivocados,
O caractere BarraZero não é incluido na contagem do strlen, e o strlen não retorna um numero a mais.
strlen("teste") = 5
t e s t e BarraZero
0 1 2 3 4 5
A razão para retornar 5 não é o BarraZero, é porque o que é retornado é o *número* de carateres, e não o *index* do último.
Para retornar o último index(caso exista) deve utilizar strlen()-1.
strlen("BarraZero")-1, iria retornar -1, e eu não posso dizer que uma string tem -1 caracteres.
O problema, como já foi explicado, é justamente por causa do cedilha ocupar dois bytes (nesta maquina, ao menos), e o strlen assume que 1 byte = 1 caractere, não levando em consideração os caracteres formados por mais de um byte.