Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/06/2005, 13:23
MaxExtreme
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 10 meses
Puntos: 17
(Suponiendo que usuari apunta a una zona de memoria válida...)

El único fallo que veo es que nunca compruebas el '\0'. Te recuerdo que el terminador de una cadena no es '\n' sino '\0' y deberías comprobarle siempre, aparte de los demás que necesites.


Por cierto, haces algo extraño... ¿No es mejor simplificar así?

for(int i=9, int j=0;i<19&&buffer[i]!='\n'&&buffer[i]!='\0';i++,j++) usuari[j]=buffer[i];


O sin la j:

for(int i=9;i<19&&buffer[i]!='\n'&&buffer[i]!='\0';i++) usuari[i-9]=buffer[i];


O mejor aún:

int i=9;
while(i<19&&buffer[i]!='\n'&&buffer[i]!='\0') usuari[i-9]=buffer[i];


O incluso si quieres hacer el bobo todavía más:
int i=9;
while(i++<19&&buffer[i]!='\n'&&(usuari[i-9]=buffer[i])!='\0'); **

** Eso del ++ dentro puede no funcionar igual en los distintos compiladores, hay que tener cuidado.

Para que luego digan que sólo Perl tiene distintas maneras de hace runa misma cosa .