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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Duda sobre una parte del libro de k&r en: 1 Mayo 2019, 00:04 am
Hola a todos. Tengo una duda:
En un ejemplo del libro de k&r se divide un programa en varios archivos fuente. Uno de ellos es getch.c:

#include <stdio.h>
#define BUFSIZE 100

char buf[BUFSIZE];
int bufp = 0;
itn getch(void) {
   ...
}

void ungetch(int) {
   ...
}

Dentro de getch y de ungetch se usan tanto buf como bufp.
Más adelante dice:
"La declaración static, aplicada a una variable o función externa, limita el alcance de ese objeto al resto del archivo fuente que se está compilando. Así las variables static externas proporcionan una forma de ocultar nombres como buf y bufp en la combinación getch-ungetch, que deben ser externas para que puedan ser compartidas, aunque no deben ser visibles a los usuarios de getch y ungetch."

¿Qué significa "ocultar nombres" y que "no son visibles"?

2  Programación / Programación C/C++ / Duda con ejemplo del libro k&r en: 21 Abril 2019, 01:00 am
Hola! Tengo una duda con este ejemplo del libro de k&r.
Según entiendo en el while de main se le pasa valores a la función getline al momento de llamarla. ¿En qué momento se  le pasa el arreglo s (que está dentro de getline) al arreglo line?
También quisiera saber: ¿El arreglo s que está dentro de getline tiene una extensión de 1000 caracteres al igual que line?

#include <stdio.h>
#define MAXLINE 1000    // maximum input line size

int getline(char line[], int maxline);
void copy(char to[], char from[]);

/* print longest input line */

int main()
{
    int len;            //current line lenght
    int max;            //maximum length seen so far
    char line[MAXLINE]; //current input line
    char longest[MAXLINE];//longest line saved here

    max = 0;
    while ((len = getline(line, MAXLINE)) > 0)
        if (len > max) {
            max = len;
            copy(longest, line);
        }
        if (max > 0)   //there was a line
            printf("%s", longest);
            return 0;
}

/*  getline: read a line into s, return length */
int getline(char s[], int lim)
{
    int c, i;

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


/* copy: copy 'from' into 'to'; assume to is big enough */
void copy(char to[],char from[])
{
    int i;

    i = 0;
    while ((to = from) != '\0') {
        ++i;
    }
}
3  Programación / Programación C/C++ / Programación C en: 4 Abril 2019, 01:37 am
Hola! ¿Alguien me puede explicar, línea por línea, lo que hace este programa de ejemplo del libro de Ritchie y Kernighan?

#include <stdio.h>

int power(int m, int n);

/* prueba la función power */
main()
{
   int i;
   
   for (i = 0; i < 10; ++i)
      printf ("%d %d %d\n", i, power(2,i), power (-3,i);
   return 0;
}

/* power: eleva la base a la enésima potencia; n > = 0 */

int power(int base, int n)
{
   int i, p;
   
   p = 1
   for ( i = 1; i < = n; + + i)
      p = p * base
   return p;
}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines