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


 


Tema destacado: Sigue las noticias más importantes de elhacker.net en ttwitter!


Páginas: [1] 2 3 4 5 6 7 8 9 10
 1 
 en: Hoy a las 10:09 
Iniciado por NOB2014 - Último mensaje por MAFUS
Eso quiere decir que la función no acepta argumentos y no devuelve ningún dato. Es lo mismo que void mensaje(). Es una cuestión de estilos.

 2 
 en: Hoy a las 10:06 
Iniciado por luisito45 - Último mensaje por MAFUS
Existe el bucle pero no está reflejado en el código. luisito45 dice:
Citar
El script obviamente no esta completo pero [...]

 3 
 en: Hoy a las 09:22 
Iniciado por trioper - Último mensaje por trioper

Y qué pasa si se ingresa una velocidad negativa?

nunca acaba el bucle xd

 4 
 en: Hoy a las 08:31 
Iniciado por RevolucionVegana - Último mensaje por Hason
Por dios, así está el mundo.
Yo esto no lo puedo ver, solo se ve la agresión, no se a que será debido, pero es injustificable.
El pobre tio estaba sentado tomando algo y le hacen eso por que si....

en fin, me  callo, que ya tengo yo suficiente con lo mio.
Pero espero que se le trate con dignidad al afectado.

No se si estarian de juerga y serian amigos o yo que se, pero me parece excesivo.
No se que condena mereceria por que no soy juez.

Saludos.

 5 
 en: Hoy a las 05:15 
Iniciado por pokedavid012 - Último mensaje por 3n31ch
De que compañia de internet eres y que modem tienes?

 6 
 en: Hoy a las 05:11 
Iniciado por Definitive - Último mensaje por aurquiel
 :D

Hola te puedo hablar es desde linux y de c no de c++ y lo que te voy a decir te va a conducir a otra pregunta de como funciona, pero vas a estar mas cerca aunque la respuesta no es tan trivial se necesita tiempo para comprer como funciona.

printf() es la funcion de impresión en patalla de c, pero printf es una mascara por asi decirlo de una función del kernel de linux system call llamada write() que opera a bajo nivel

Si tomas un programa en c
Código
  1. #include <stdio.h>
  2. int main(void)
  3. { printf("hello"); return 0; }

Lo compilas, abres la consola  
Código:
gcc -Wall -o hello hello.c
y luego ejecutas
Código:
strace ./hello

Impresionado?

Código:
execve("./book", ["./book"], [/* 48 vars */]) = 0
brk(NULL)                               = 0x1640000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd227e03000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=162022, ...}) = 0
mmap(NULL, 162022, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd227ddb000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\t\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1864888, ...}) = 0
mmap(NULL, 3967392, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd227817000
mprotect(0x7fd2279d6000, 2097152, PROT_NONE) = 0
mmap(0x7fd227bd6000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bf000) = 0x7fd227bd6000
mmap(0x7fd227bdc000, 14752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd227bdc000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd227dda000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd227dd9000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd227dd8000
arch_prctl(ARCH_SET_FS, 0x7fd227dd9700) = 0
mprotect(0x7fd227bd6000, 16384, PROT_READ) = 0
mprotect(0x600000, 4096, PROT_READ)     = 0
mprotect(0x7fd227e05000, 4096, PROT_READ) = 0
munmap(0x7fd227ddb000, 162022)          = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
brk(NULL)                               = 0x1640000
brk(0x1661000)                          = 0x1661000
write(1, "hello", 5hello)                    = 5
exit_group(0)                           = ?
+++ exited with 0 +++

Todo eso son system calls del kernel de linux, mira esta linea

Código:
write(1, "hello", 5hello)                    = 5

Hasta aquí llego yo no he tenido el tiempo para saber como esta construido el kernel de linux, pero parece ser complicado.

Se que no he respondido a totalidad tu pregunta, pero hasta ahora yo solo hago aplicaciones de usuarios, tu proyecto parece ser muy ambicioso, al indagar mas a fondo te vas a encontrar cosas que requerirán mucho tiempo de análisis y estudio, mejor comenzar por algo suave y con el tiempo ir hacia aguas mas profundas.

Esto quiere decir que c esta corriendo encima de todo esto, el kernel.

Y por asi decirlo el Kernel esta construido en su propia version de c diferente, con funciones llamdas diferentes al ANSI C pero de comportamiento similar como son prinftk en ves de printf okmalloc en vez de malloc y asi otras mas.

 7 
 en: Hoy a las 04:44 
Iniciado por aurquiel - Último mensaje por aurquiel
En un ejercicio debo encontrar un patrón de un arreglo desde la derecha hacia la izquierda de otro arreglo.

Tengo la funcion get_line para obtener la linea a comparar con el patrón y la funbcion strindex para buscar el patron.

En la función strindex, en el segundo ciclo for al colocar una coma ; como bloque de ese ciclo, osea el bloque no ejecuta nada solo verifica la condición y decrementa las variables, me da un error extraño al usar el debug de Codeblocks las variables a la segunda vez que se llama a ese for toman valores extraños, solo  a la segunda vez.

Les dejo la función que sirve, pero no entiendo porque la otra versión del código no sirve.

Version que sirve
Código:
#include <stdio.h>
#include <string.h>
#define MAXLINE 1000 /* maximum input line length */

int get_line(char line[], int max);
int strindex(char source[], char searchfor[]);
char pattern[] = "program";     /* pattern to search for */

/* find all lines matching pattern */
int main()
{
    char line[MAXLINE];
    int found = 0;

    while (get_line(line, MAXLINE) > 0)
        if (strindex(line, pattern) >= 0)
        {
            printf("%s", line);
            found++;
        }
    return found;
}

/* getline: get line into s, return length */
int get_line(char s[], int lim)
{
    int c, i;
    i = 0;
    while (--lim > 0 && (c=getchar()) != EOF && c != '\n')
        s[i++] = c;
    if (c == '\n')
        s[i++] = c;
    s[i] = '\0';
    return i;
}

/* strindex: return index of t in s, -1 if none */
int strindex(char s[], char t[])
{
    int i, j, k;

    for (i = strlen(s)-1;  i>=0; i--)
    {
        for (j=i, k=strlen(t)-1; s[j]==t[k]; j--, k--)
            if (k == 0 )
                return i;
    }

    return -1;
}

Version que no sirve fijense en como cambie en strindex el bloque del sgundo for por un punto y coma, el programa compila bien, deberia funcionar
Código:
#include <stdio.h>
#include <string.h>
#define MAXLINE 1000 /* maximum input line length */

int get_line(char line[], int max);
int strindex(char source[], char searchfor[]);
char pattern[] = "program";     /* pattern to search for */

/* find all lines matching pattern */
int main()
{
    char line[MAXLINE];
    int found = 0;

    while (get_line(line, MAXLINE) > 0)
        if (strindex(line, pattern) >= 0)
        {
            printf("%s", line);
            found++;
        }
    return found;
}

/* getline: get line into s, return length */
int get_line(char s[], int lim)
{
    int c, i;
    i = 0;
    while (--lim > 0 && (c=getchar()) != EOF && c != '\n')
        s[i++] = c;
    if (c == '\n')
        s[i++] = c;
    s[i] = '\0';
    return i;
}

/* strindex: return index of t in s, -1 if none */
int strindex(char s[], char t[])
{
    int i, j, k;

    for (i = strlen(s)-1;  i>=0; i--)
    {
        for (j=i, k=strlen(t)-1; s[j]==t[k]; j--, k--)
            ;
        if (k == 0 )
            return i;
    }

    return -1;
}



 8 
 en: Hoy a las 04:25 
Iniciado por Jamjize - Último mensaje por Eleкtro
y quiero saber: ¿Como hago que salte un error que diga "no uses espacios por favor" y que vuelva al menu?

En lugar de eso, podrías controlar la escritura de espacios en blanco para mejorar la usabilidad de la interfáz de usuario, permitiendo que tu hermano o quien quiera pueda escribir espacios. Ah, y ten presente la importancia de encerrar entre comillas dobles los miembros del código que has mostrado para evitar posibles errores de sintaxis...

Código
  1. Set "dir=Jugar sims4"
  2. Set "dir=%dir: =-%" & :: reemplazar espacios por guiones.
  3. if /I "%dir%" EQU "jugar-sims4" (Start "" "E:\%dir%\TS4.exe" & GoTo :volv1)

De todas formas y respondiendo a tu pregunta original, puedes utilizar el comando FIND:
Código
  1. Set "dir=Jugar sims4"
  2. (Echo "%dir%"|FIND " ")1>NUL && (
  3.    CLS
  4.    Echo:El comando contiene espacios en blanco.
  5.    Pause
  6.    GoTo :volv1
  7. )

¡Saludos!

 9 
 en: Hoy a las 04:17 
Iniciado por trioper - Último mensaje por CalgaryCorpus
Y qué pasa si se ingresa una velocidad negativa?

 10 
 en: Hoy a las 04:09 
Iniciado por gabrielprocs - Último mensaje por gabrielprocs
Tenias razón no era problema del puerto, era el módem a el le cambiaron por otro y le funciono yo sigo con el mismo mas era para ayudarlo a el  :rolleyes:
Gracias por la respuesta  ;D

Páginas: [1] 2 3 4 5 6 7 8 9 10
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines