elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda con codigo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con codigo  (Leído 1,473 veces)
[Kayser]

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Duda con codigo
« en: 17 Diciembre 2012, 19:26 pm »

Buenas gente estoy estudiando C con el libro El lenguaje de programacion C de Kernighan y Ritchie y en una parte del libro en la que sale el codigo siguiente que se supone que toma una serie de caracteres introducidos por el teclado y devuelve el mas largo me han salido varias dudas:

Código:
#include <stdio.h>
#define MAXLINE 1000
int getline(char line[],int maxline);
void copy(char to[],char from[]);
main()
{
    int len;
    int max;
    char line[MAXLINE];
    char longest[MAXLINE];

    max = 0;
    while((len = getline(line, MAXLINE))>0)
        if (len > max){
            max = len;
            copy(longest, line);
        }
        if (max > 0)
            printf("%s", longest);
        return 0;
}
int getline(char s[], int lim)
{
    int c, i;

    for(i=0;i<lim-1 &&(c=getchar())!=EOF && c!='\n';++i)
        s[i]=c;
    if(c =='\n'){
        s[i]=c;
        ++i;
    }
    s[i]='\0';
    return i;
}
void copy(char to[],char from[]){
    int i;
    i=0;
    while((to[i]=from[i])!='\0')
        ++i;
}

No veo claro cuando se reinicializa la variable i en el array. En que momento la i se reinicializa para que s sea s[0] y sobreescriba la anterior secuencia de caracteres que habia? Porque para que en cada momento se vaya escribiendo la secuencia de caracteres que se introduzca en el array i tiene que haber un momento en que se salga del bucle for y se reinicie la i a 0 no? Si no se continuaria incrementando la i partiendo de la ultima posicion rellenada con un caracter y el programa no funcionaria como es espera devolviendo la secuencia caracteres mas larga... Porque cuando sale del ciclo for cuando se cumpla una de las condiciones o cuando se cumplan todas?


En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Duda con codigo
« Respuesta #1 en: 17 Diciembre 2012, 20:27 pm »

La i en el caso de la función getline() se inicializa en el for:

for(i=0;i<lim-1 &&(c=getchar())!=EOF && c!='\n';++i)

En el caso de la función copy se inicializa antes del while

int i;
i=0;
while((to=from)!='\0')
++i;


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda en el codigo vb
Programación Visual Basic
josemer 0 1,304 Último mensaje 23 Enero 2006, 20:32 pm
por josemer
duda en un codigo vb
Programación Visual Basic
ugruhell 6 2,405 Último mensaje 26 Agosto 2006, 00:20 am
por Ironhorse
Duda con codigo de vb6 y el MSN « 1 2 »
Programación Visual Basic
Anteros 10 3,365 Último mensaje 6 Abril 2007, 01:54 am
por Sancho.Mazorka
Duda codigo PHP
PHP
knox18 1 1,685 Último mensaje 9 Septiembre 2007, 17:24 pm
por P[i]
Duda codigo PHP « 1 2 »
PHP
knox18 14 5,363 Último mensaje 14 Septiembre 2007, 15:15 pm
por Alex_bro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines