Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Caster

#1
Buenas!

Os comento: estoy leyendo los tutoriales de ricardo Narvaja sobre cracking. Ahora mismo estoy casi en el final de la primera parte. Hasta ahora lo que se es que cuando introduzco el serial primero comprueba si en el "Name" contiene numeros, y si los tiene muestra dos mensajes diferentes de "No luck", he llegado hasta la parte del código donde hace esta comprobación:

CPU Disasm
Address   Hex dump          Command                                  Comments
00401389  |.  3C 41         |CMP AL,41
0040138B  |.  72 1F         |JB SHORT 004013AC


Va comparando caracter a caracter y salta en el primer número que encuentre, entonces he estado jugando con el el flag CF para que, aunque haya un número, no se realice el salto. Si el salto no se realiza, pasa a la comprobación del segundo mensaje:

CPU Disasm
Address   Hex dump          Command                                  Comments
00401241  |.  3BC3          CMP EAX,EBX
00401243  |.  74 07         JE SHORT 0040124C


Si EAX y EBX son iguales, salta a un call que llama al mensaje bueno, entonces, se supone, que cuando ya he conseguido saltarme la primera comprobacion viene a esta, y si antes de ejecutar el crackme pongo el ZF a 1, saltará al mensaje bueno. El problema es que no lo hace, y no entiendo el por qúe, ya que he probado a poner un BP en dicho salto, activar el ZF y haciendo eso si que muestra el mensaje bueno. Espero haber explicado más o menos bien.

Un saludo.
#2
Windows / Luz del disco duro siempre encendida
4 Noviembre 2014, 17:59 PM
Buenas, desde hace unos días me estoy  fijando en que una luz en el PC que tiene un cilindro encima(creo que tiene algo que ver con el disco duro) pasa mucho tiempo(la mayoría) encendida mientras el ordenador esté encendido. La verdad no sabría decir desde hace cuando o si lo ha hecho desde siempre. La cosa es que quería saber si es algo sospechoso o es totalmente normal.
Un saludo.
#3
Windows / Problema con Chrome y web extraña
30 Septiembre 2014, 22:13 PM
Buenas. Tengo instalado chrome en un PC y desde hace unos días cada vez que se abre la página principal es un buscador con el cual chrome no está configurado. Dicho buscador es sweet-page o algo así. En la propia configuración está todo en regla y buscando por google encontré que eso puede ser un virus que modifica el acceso directo a chrome para que abra esa página cuando se inicia. En principio el acceso directa estaba bien pero por si acaso lo borré y cree uno nuevo que apunta al archivo "chrome.exe" en la carpeta de Google y aun así el problema persiste y no tengo ni idea de como solucionarlo.

Un saludo.
#4
ASM / Como empezar códgio en ASM
7 Septiembre 2014, 22:20 PM
Buenas, estoy iniciandome en esto del ASM y echandole un vistazo a algunos codigos de ejemplo no termino de ver cual sería la forma correcta de iniciar un código de ASM. Me explico, he visto ejemplos asi:

Código (asm) [Seleccionar]
fortmat PE GUI 4.0
entry start
.data
start:
        ;codigo   


Códigos que por el contrario suprimen la linea de "entry start" y al final termina con un ".end etiqueta". Por otra parte, tambien he visto un par de formas diferentes de empezar las secciones del codigo, por ejemplo: ".data" frente a "section '.data' data readable writeable" u otro tipo de sección como "section '.idata' import data readable writeable". Otros codigos tambien que empezaban de esta manera:
Código (asm) [Seleccionar]
386
.model flat, stdcall
option casemap:none


Tambien me surge la duda probando estas cosas es que entre estos dos codigos:
Código (asm) [Seleccionar]
format PE GUI 4.0
include 'win32ax.inc'

.data
_msg db 'Hola',0

.code
main:
        invoke MessageBoxA,0,_msg,0,MB_OK
        invoke ExitProcess, 0

.end main 


Código (asm) [Seleccionar]
format PE GUI 4.0
include 'win32ax.inc'
entry main
.data
_msg db 'Hola',0

.code
main:
        invoke MessageBoxA,0,_msg,0,MB_OK
        invoke ExitProcess, 0   


El primero compila sin problemas sin embargo el segundo no, lo que supongo que estará lo relacionado con lo que dije mas arriba. Aclaro que estoy utilizando FASM (no se si esto influye) en Windows XP de 32bits lo que si supongo que influye en el tipo de código.

Un saludo
#5
Buenas, estoy intentando hacer un programa que halle los numeros primos entre 0 y n, ya se que ha salido mas de una vez en el foro y que habrá mucha información por ahí sobre este problema. Ya he estado leyendo algunos posts anteriores y basandome en ellos hice esto, que es la parte prinicpal del programa, el resto da igual ahora mismo:

for(j= 3; j <= num; j += 2){
        for(i = 3; i <= j; i++){
            if((j%1) == 0 && (j%j) == 0 && (j%i) == 0)
            printf("\n%d\t", j);
        }
    }


En este codigo, con el 15 por ejemplo, se realiza la comprobacion 13 veces (desde 3 a 15, ambos inclusive), 3 de ellas son verdaderas (i=3; i=5; i=15) y el resto son falsas. Digo esto porque con esta comprobacion el 15 sale 3 veces, y que tampoco me valdria poner:

if((j%1) == 0 && (j%j) == 0 && (j%i) != 0)

Porque saldría el resto de las veces, es decir, 10.

También probé a poner:

if((j%1) == 0 && (j%j) == 0)

El problema es que esta condicion la cumplen todos los numeros, no solo los primos, lo que pasa es que lo que caracteriza a los numeros primos es que solo cumplen esas dos condiciones, lo que quiero decir es que no logro aislar los numeros que solo cumplan esas dos condiciones, que son los que yo busco.

Un saudo
#6
Buenas a todos, estoy intentando hacer un programa que pase de números arábigos a romanos, busqué en el foro pero solo encontré un par de temas en los que se hablaba de como hacer el proceso a la inversa. Lo que yo había pensado era darle a programa las equivalencias entre los numeros romanos y los arábigos e ir comparando, me explico:
-Si tenemos el numero 200, el numero romano mas grande que podemos utilizar para representar el 200 es C, entonces se escribe una C y se resta a 200, quedarían otros 100 y por lo tanto se pondría otra C, 200= CC.
-Lo mismo por ejemplo con el número 1200, el romano mas cercano al 1200 y que no sea mayor es M, se restaria a 1200 quedando 200, y a partir de aqui igual que el proceso para el número anterior.

El problema viene si se trata del número 4 por ejemplo, V no valdría porque es mayor entonces, siguiendo el mismo proceso de antes, seria IIII, pero eso tampoco es posible, quería alguna orientación para saber como resolver este problema o hacia donde orientar mi programa, muchas gracias.

Un saludo.
#7
Scripting / [Perl] Función sort
31 Diciembre 2013, 17:28 PM
Buenas, tengo un problema con la función sort, y es que solo ordena las primeras cifras de un número, busqué en la documentación de perl, pero viene todo en inglés y no entiendo nada. Tengo este código:
Código (perl) [Seleccionar]
#!/usr/bin/perl

use warnings;
use strict;

my @array = (5, 4, 1, 3, 7, 6);
@array = sort @array;
print $array[0] . "\n";
print $array[1] . "\n";
print $array[2] . "\n";
print $array[3] . "\n";
print $array[4] . "\n";
print $array[5] . "\n";

La función sort ordena bien los números y la salida es la esperada, pero cuando cambio un elemento del array por un número de dos cifras, únicamente ordena la primera cifra, un ejemplo:

Código (perl) [Seleccionar]
#!/usr/bin/perl

use warnings;
use strict;

my @array = (5, 43, 45, 3, 7, 6);
@array = sort @array;
print $array[0] . "\n";
print $array[1] . "\n";
print $array[2] . "\n";
print $array[3] . "\n";
print $array[4] . "\n";
print $array[5] . "\n";

La salida de este codigo es
Citar2
3
43
45
5
6
Las unicas cifras que está ordenadas son las primeras.

Saludos
#8
Redes / Que son y como eliminar adaptadores de tunel
27 Diciembre 2013, 12:48 PM
Buenas, he cambiado el router que tengo en casa, he configurado lo básico del router nuevo, el SSID, la contraseña, desactive el WPS y algunas que otra cosa más. Me encuentro que al hacer ipconfig /all aparece esto:

CitarAdaptador de túnel isatap.{*****}:

   Estado de los medios. . . . . . . . . . . : medios desconectados
   Sufijo DNS específico para la conexión. . :
   Descripción . . . . . . . . . . . . . . . : Adaptador ISATAP de Microsoft
   Dirección física. . . . . . . . . . . . . : *****
   DHCP habilitado . . . . . . . . . . . . . : no
   Configuración automática habilitada . . . : sí

No entiendo que es esto, y si es preciso quitarlo o es algo importante, he buscado por google pero no etendí muy bien que era y no quiero eliminar algo sin saber si es necesario o no, lo pregunto porque tambien aparece otro adaptador que tiene esto:

CitarSufijo DNS específico para la conexión. . : WA320N (modelo del router anterior)

Asi que supongo que tendrá algo que ver con la configuración del anterior router y quería saber que es lo que tengo que hacer.

Nota: Los asteriscos son número que quite porque como no se lo que es no se hasta que punto puede ser peligrosa esa información.

Saludos y gracias.
#9
Foro Libre / Engranaje que levita. Cosmocaixa
23 Diciembre 2013, 22:40 PM
Buenas a todos, posiblemente penséis que este tema no tiene nada que ver con la temática del foro, pero llevo todo el día pensando en esto y no soy capaz de averiguarlo, lo comparto con vosotros a ver que sale de aquí. En una exposición de la obra social de la caixa sobre ciencia e ilusionismo se muestra un engranaje que aparentemente está levitando y alrededor del engranaje pasan 4 barras de metal formando un cuadrado para demostrar que no hay nada que sujete a ese engranaje, aparece en los primeros segundos de este vídeo, para que lo veáis mejor:

[youtube=640,360]http://www.youtube.com/watch?v=NGkdtagDXJg[/youtube]

Llevo todo el día pensando en esto, y lo primero que se me ocurrió fue que el engranaje estuviera sujetado por un soporte que no se ve y se coordina con las barras mientras gira el engranaje para que no choquen, pero es que de vez en cuando el engranaje se para, por lo tanto esto ya no tiene sentido. Otra opción que también pensé fue que estuviera sujeto por una fuerza magnética, es decir, por imanes, pero según el responsable de la exposición, harían falta unos imanes muy fuertes para poder soportar ese engranaje. Aparte de estas ideas no se me ocurre otra cosa, posiblemente algunos ya conozcáis esto porque según veo en el vídeo es de hace unos años, pero yo hace poco que lo he visto y me he puesto a pensarlo hoy y no lo doy adivinado, a ver que opináis.

Saludos
#10
Ingeniería Inversa / Problema con PUSH en Ollydbg
14 Diciembre 2013, 13:53 PM
Buenas a todos, estoy leyendo unos tutoriales de Ricardo Narvaja del ollydbg, no se en que lección estoy porque vienen todas juntas, pero estoy leyendo sobre las instrucciones del stack, en concreto sobre la instrucción PUSH, que según entendi sirve para añadir valores al stack. Lo estoy probando con un Crackme que venia con los propios tutoriales y al meterlo en el Ollydbg la primera linea del desemsamblado es un PUSH 0, si me situo en esa línea y la ejecuto, en el stack queda de primero una direccion con el valor 00000000, hasta ahí todo bien, después explica la diferencia entre poner PUSH numerox que poner PUSH [numerox], si pongo PUSH 401008 en el stack queda de primero una direccion con el valor 401008, si busco en el dump la direccion 401008 contiene los valores CA 20 40 00, los que quiero introducir en el stack con la instrucción PUSH [401008] pero cuando la intento introducir en el desensamblador me pone: "Please specify operand size" y no entiendo que quiere decir eso, me fije tambien que en la foto que trae el tutorial en vez de PUSH [401008] pone PUSH DWORD PTR DS: [401008], si lo introduzco de esta manera si que funciona, pero en el tutorial explica que hay que introducir PUSH [401008] únicamente, quería saber si es problema de que algo estoy haciendo mal o el tutorial viene mal explicado.

Saludos
#11
Buenas, he estado viendo tutoriales de php, y en todos los tutotriales que vi, los documentos .html empezaban de maneras parecidas a esta:

Código (html) [Seleccionar]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />


Y queria saber que funcion tiene esto que llevan los archivos al principio y si es obligatorio copiarlo en toods los archivos .html
Saludos
#12
Desarrollo Web / Consejos para empezar
10 Noviembre 2013, 12:13 PM
Buenas, pues me he decidido a aprender sobre programación web, PHP, bases de datos, servidores web, etc. Y se me había ocurrido una idea, tengo a mi disposición dos Pc's de sobremesa en la misma red LAN, los dos con W7 y había pensado que podía montar en uno un servidor web y programarlo y configurarlo según lo que vaya aprendiendo, y utilizar el otro Pc para comprobar la seguridad, el funcionamiento, etc. No se si esto es posible o estoy diciendo barbaridades, quería consultaros a vosotros si esta sería una buena forma de empezar. Tambien se me ocurrió la opción de montar una máquina virtual en uno de los pcs y montar el servidor sobre Linux, ya que según lo que he leído, es mucho mejor en todos los sentidos para esto.

Saludos
#13
Programación C/C++ / Ofuscación
9 Noviembre 2013, 22:22 PM
Buenas, he estado leyendo sobre ofuscación del código y lo único que he leído es lo que viene en la wikipedia, que supongo que será lo más básico sobre esto, según la wikipedia:
int int_;

Estaríamos definiendo una variable entera, hasta ahí bien.

_int-_int;

Esto sería = 0

(_int-_int)!;
Y esto sería = 1, y aqui llega lo que no entiendo, por qué el resultado de la siguiente línea es 10:
(((!(int_-int_)<<!(int_-int_))<<(!(int_-int_)<<!(int_-int_)))|(!(int_-int_)<<!(int_-int_)));

Saludos.
#14
Hardware / Consejo para comprar portatil
28 Septiembre 2013, 17:18 PM
Buenas, recurro a vosotros porque un amigo me pidio que le diera consejo que anda buscando un portatil nuevo y yo os comento a vosotros. El presupuesto que tiene es de alrededos de 600€, euro arriba euro abajo, va a ser principalmente para uso personal, modificar documentos tipo word, power point, etc, para trabajos de clase, y a lo mejor algun que otro juego y para ver peliculas, nada fuera de normal para lo que se necesite un ordenador de alto rendimiento.

Saludos y gracias
#15
Buenas, en un libro que estoy leyendo viene un programa, que a partir de una fecha base (Lunes, Enero 1, 1900) averigua el dia de la semana introduciendo dia mes y año. El programa entero es el siguiente:

#include <stdio.h>

void leerentrada(int *pm, int *pd, int *pa);
int convertir(int mm, int dd, int aa);

int main()
{
   int mm, dd, aa;
   int dia_semana;

   static char *diasemana[] = {    "Domingo",
                                   "Lunes",
                                   "Martes",
                                   "Miércoles",
                                   "Jueves",
                                   "viernes",
                                   "Sabado"    };

   static char *mes[] = {  "Enero",
                           "Febrero",
                           "Marzo",
                           "Abril",
                           "Mayo",
                           "Junio",
                           "Julio",
                           "Agosto",
                           "Septiembre",
                           "Octubre",
                           "Noviembre",
                           "Diciembre" };

   printf("Rutina de conversión de fecha\n Para parar, introducir 0 0 0");

   leerentrada(&mm, &dd, &aa);

   while (mm > 0)
   {
       dia_semana = convertir (mm, dd, aa);
       printf("\n%s, %s %d, %d", diasemana[dia_semana], mes[mm-1], dd, aa);
       leerentrada(&mm, &dd, &aa);
   }
   return 0;
}

void leerentrada(int *pm, int *pd, int *pa)
{
   printf("\n\nIntroducir mm dd aaaa: ");
   scanf("%d %d %d", pm, pd, pa);
}

int convertir (int mm, int dd, int aa)
{
   long int ndias;     // numero de dias desde el comienzo de 1900
   long int nciclos;   //numero de ciclos de 4 años despues de 1900
   int nanios;         //numero de años despues del ultimo ciclo de 4 años
   int dia;            //dia de la semana (0, 1, 2, 3, 4, 5 o 6)

   aa -= 1900;

   ndias= (long) (30.42 * (mm - 1) + dd); //dia aproximado del año

   if (mm == 2) ++ndias;   //ajuste para febrero
   if ((mm > 2) && (mm < 8)) --ndias;  //ajuste para marzo-julio
   if ((aa % 4 == 0) && (mm > 2)) ++ndias; //ajuste para el año bisiesto

   nciclos = aa / 4;   //ciclos de 4 años a partir de 1900

   ndias += nciclos * 1461;    //añadir dias por ciclos de 4 años

   nanios = aa % 4;        //años despues del ultimo ciclo de 4 años

   if (nanios > 0) ndias += 365 * nanios + 1; //añadir dias por años despues del ultimo ciclo

   if (ndias > 59) --ndias; //ajustar para 1990 (NO años bisiesto)

   dia = ndias % 7;

   return (dia);
}


el codigo esta copiado exactamente igual que en libro, con los comentarios para explicarlo.

Me ha costado, pero he entendido, en parte, la logica del programa, porque lo que no entiendo es como hace la funcion convertir para sacar el dia de la semana, de esa funcion la unica linea que entiendo es esta:

aa -= 1900;

Lo que hace es sacar los años que han pasado desde el año 1900 hasta hoy, pero a partir de ahi no entiendo nada de nada y queria pedir a ver si alguien me lo explica de alguna manera mas clara que en libro.
#16
Buenas, he estado leyendo sobre arrays y punteros en C y he leido no es obligatorio pasar todo el array a una funcion sino que se puede pasar solo una parte, por ejemplo:

#include <stdio.h>

void procesar(float z[]);

int main()
{
   float z[100];
   
   /*...codigo...*/
   
   procesar(&z[50]);
   
   /*...codigo...*/
   return 0;
}

void procesar(float *f)
{
   /*...codigo..*/
   return 0;
}


En este ejemplo, z es un array de 100 elementos pero en la funcionar procesar() solo se utilizaran a partir del elemento numero 50 en adelante, y la duda que me surge es, si yo solo quiero utilizar los 50 primeros elementos, es decir, desde el elemento z[0] hasta el elemento z[49], como lo indicaría en la llamada a la función.

la unica manera que se me ha ocurrido seria asi:

procesar(&z[100-51])
Saludos
#17
Programación C/C++ / Problema con casting
18 Junio 2013, 22:01 PM
Llevo un rato ya rompiéndome la cabeza con este programa y se que es una tontería, pero no veo el problema, es un simple programa para ver si un número es par o no y es el siguiente:
#include <stdio.h>
int main() {
    float num;
    printf("Introduzca el numero:\n");
    scanf("%lf", &num);
    if ((num / 2) == ((int)(num/2)))
       printf("Es par\n");
    else if ((num / 2) != ((int)(num/2)))
       printf ("Es impar\n");
    getchar();

    return 0;
}


El primero fallo que tuve fue con el casting de int porque no le ponía paréntesis y me daba fallo al compilar pero ya lo solucioné, el problema que tengo es que me da que todos los números son pares, se que hay otras formas de hacerlos como con el operador % y alguna mas, pero lo que quiero es la solución a mi problema, porque no la encuentro.

Saludos.

EDITO: Cambie el tipo de variable float por double y funciona, pero no entiendo el por qué.

EDITO2: Si dejo el float y cambio el "%lf" en el scanf por "%f" funciona igual.
#18
Windows / Problema con programas al inicio
16 Junio 2013, 19:39 PM
Buenas, os comento, tengo un problema con los programas que se abren al inicio de windows, yo abro una ventana de Ejecutar y ejecuto msconfig y en la pestaña de Inicio de Windows elijo los programas para iniciarse cuando se inicia Windows, el problema que tengo es que deselecciono algunos programas como el Ares, Itunes y Spotify para que no se inicien pero cuando yo apago y enciendo el PC esos aparece creada otra "entrada" por llamarlo de alguna manera y esta seleccionada para que esos programas se inicien y algunas de ellas están repetidas porque ya me ha pasado varias veces.

Saludos.
#19
Buenas, en un libro que estoy leyendo estoy con el tema de variables automáticas, estáticas, etc y de ejemplo me ponen un programa para calcular los números de Fibonacci que utiliza la siguiente función:

long int fibonacci (int cont)
{
    static long int f1 = 1, f2 = 2;
    long int f;
    f = (cont < 3) ? 1 : f1 + f2;
    f2 = f1;
    f1 = f;
    return(f):
   
}


No entiendo el uso de las variables, vaya cacao tengo hecho, porque al principio f1 y a f2 se le asignan los valores 1 y 2 respectivamente pero después se les vuelve a asignar los números anteriores al número actual de la sucesión ( no se si me estoy explicando bien), eso en la primera llamada a la función, pero por lo que entendí leyendo, supuestamente cuando se vuelve a llamar a la función las variables f1 y f2 volverían a tomar los valores 1 y 2, eso entendí yo, por eso no entiendo como funcionan aquí las variables, perdonad si no me explico muy bien, pero no se explicarme con el cacao que tengo en mente.
Para no armaros un lío, cont es una variable fuera de la función que cuenta las pasadas por un bucle while y saber cuantos números hay que mostrar de la sucesión.

Saludos
#20
Software / MalwareBytes y SuperantiSpyware
16 Mayo 2013, 20:25 PM
Os comento, en mi PC tengo instalado un antivirus y el Malwarebytes, estos son los únicos programas que tengo instalados para la detección de malware, después tambien tengo el CCleaner, pero eso es aparte. Quería saber si es aconsejable que para reforzar este software puedo instalar el SuperantiSpyware o podría tener problemas al tener ya instalado el Malwarebytes.

Saludos.
#21
Buenas, pues ya hace un par de meses que deje la programación por falta de tiempo y quiero retomarla para no perder la practica y que mejor forma de hacerlo que resolviendo algunos problemas, no son muy avanzados mis conocimientos, pero creo que me valdrán para hacer el siguiente problema:

CitarUna agencia de publicidad está diseñando un catálogo, organizado en capítulos. Para
hacer más atractivo el diseño gráfico, en cada página quiere poner un fondo en un color
suave que contenga una secuencia de letras que, sin ser el nombre completo del
capítulo, ni una letra aislada, lo identifique sin ambigüedad, cuando esto fuera posible.
Por ejemplo, si un capítulo fuera pincel y otro pipa, se podrían utilizar como fondo
secuencias como pin, pinc, pince, pip, ipa, etc. Por el contrario, no se
podrían utilizar secuencias como pi por ser ambiguas. Llamaremos identificadores de
las palabras a las secuencias más básicas que identifican sin ambigüedad a un capítulo.
En el ejemplo que dimos, pin, pip e ipa son identificadores. pinc y pince no lo
son, dado que se forman agregando letras a secuencias más cortas.
El problema consiste en encontrar tales identificadores. La lista de nombres de capítulos
está contenida en el archivo ident.in. Cada capítulo está identificado por una sola
palabra, de hasta 15 caracteres. Hay una línea en el archivo por cada capítulo, y el fin
está indicado por una línea en blanco. En total puede suponerse que hay 20 capítulos o
menos.
La salida se debe grabar en el archivo ident.out y debe contener los identificadores
válidos para cada capítulo, en un formato similar al del ejemplo. Los identificadores
válidos son los que tienen dos o más caracteres, están contenidos en el nombre de cada
capítulo pero no son el nombre completo, lo representan sin ambigüedad, y no hay
partes de éstos que también los representen. El orden de los identificadores no es
importante.
Ejemplo: Si ident.in contiene:
papel
pincel
cinc
pipa
cincel
El archivo ident.out podría contener:
papel:
ap
pe
pincel:
pin
cinc:
pipa:
ip
cincel:
cince

Lo de trabajar con archivos lo ignoro porque no tengo ni idea de como va eso, no estoy pidiendo para nada que me deis una solución, solo que me deis alguna idea, que me orientéis un poco, porque no se por donde empezar.
Por si a alguien le interesa, el problema está extraído de la pagina de la OIA (Olimpiada Informática Argentina) en la sección de problemas.

Edito: El lenguaje que voy a utilizar es C.

Saludos
#22
Peter Sunde, el exportavoz del buscador The Pirate Bay, ha anunciado que se presentará a las elecciones al Parlamento Europeo del próximo año por la rama finlandesa del Partido Pirata.
Recordemos que The Pirate Bay es el buscador de 'torrents' más popular del mundo, y que Peter Sunde todavía tiene que verse las caras con la justicia si quiere evitar la cárcel tras ser declarado culpable en un caso contra la web de descargas.El exportavoz de The Pirate Bay se presentará como candidato del Partido Pirata de Finlandia en las elecciones al Parlamento Europeo de 2014, que ya tiene dos miembros suecos y que esperan añadir muchos más gracias a partidos locales de otros países.''Aunque no soy político, o precisamente por eso, creo que mis experiencias y conocimiento pueden ayudar a crear soluciones a nuestras necesidades'', declaraba Sunde a TorrentFreak."Estoy haciendo lo que puedo para ayudar a resolver los problemas que tenemos hoy en día, así como los futuros. Por eso me he decidido a participar en las elecciones''.Uno de los temas que preocupan a la formación política y al que Peter Sunde hará frente es la influencia cada vez mayor del lobby de los derechos de autor en el europarlamento. También se cuentan entre sus caballos de batalla la reforma del sistema de patentes y la legalización del intercambio de archivos sin ánimo de lucro. Lo explicaba así : ''el intercambio de archivos no comerciales debe, por supuesto, ser legal y protegido. Los derechos de autor no dan dinero a los artistas, se lo dan solamente a los distribuidores".Si le eligen, Sunde tomará un rol agresivo más que defensivo. No solo reaccionará frente a lo que su partido ve como amenazas a la libertad de internet (como el tratado ACTA), sino que actuará contra este tipo de leyes incluso antes de que se incorporen a la agenda política.''Creo que hay una gran posibilidad para nosotros para impactar en la Unión Europea y me gustaría ser parte de ella", dice Sunde.Los miembros del Partido Pirata están encantados de tener a un pirata tan mediático como Sundae a bordo. Harri Kivistö, presidente del Partido Pirata en Finlandia, ha dicho que la candidatura de Sunde aumentará la visibilidad del partido en las próximas elecciones y que sus valores encajan dentro de la esencia del movimiento pirata.Kivistö, en declaraciones para TorrentFreak, añade que The Pirate Bay se ha convertido en un símbolo mundial de lucha contra los 'matones corporativos' y en un gran ejemplo de cómo crear soluciones positivas y constructivas con respecto a los derechos de los usuarios de internet.

Fuente: http://noticias.lainformacion.com/arte-cultura-y-espectaculos/internet/uno-de-los-fundadores-de-the-pirate-bay-se-presentara-a-las-elecciones-europeas-por-el-partido-pirata-en-2014_FTm2HNmVhi5WyLuUhnSfz/
#23
Bueno os comento, acabo de instalar Qt Creator y cuando escribo un simple programa en C e intento compilarlo me da el siguiente error:

Citarqtcreator_ctrlc_stub: Command line failed: make
20:56:29: The process "make" crashed.
Error while building/deploying project untitled1 (kit: Desktop Qt 5.0.2 MSVC2012 64bit)
When executing step 'Make'

Por lo que entiendo yo es un error al ejecutar "make", pero no se como solucionarlo.

Saludos
#24
Hacen un tiempo ya instalé en un disco duro Windows y Ubuntu, pero al principio tuve problemas con Ubuntu porque no me reconocía mi antena WiFi, aun después de mucho buscar seguía sin encontrarle una solución y opté por llevarlo a una tienda donde supieron solucionarmelo, ayer se me dio por volver a utilizar Ubuntu porque llevaba un par de meses sin usarlo y lo primero que hice fue abrir una consola y ejecutar los comando apt-get update y upgrade, pero desde que hice esto perdí la conexión a internet en Ubuntu y creo que tiene que ser problema de los drivers.

Saludos
#25
GNU/Linux / Actualizar Ubuntu
5 Mayo 2013, 15:24 PM
Tengo la version 12.04 de Ubuntu y querría actualizarla a la ultima que haya que creo que es la 13.04, pero no queria tener que grabar ningun CD ni nada por el estilo, unicamente actualizarlo desde el propio Ubuntu.

Un saludo y gracias
#26
Windows / Fallo en el arranque de windows
14 Noviembre 2012, 11:39 AM
Bueno, os comento mi problema, hice un LiveUSB de de Debian, y para probarlo lo inicie en un portatil que tengo con W7, lo inicie, lo probe, apague, volvi a iniciar W7 y todo perfecto. Pero el problema viene cuando hago lo mismo con un PC en el que tengo instalado Ubuntu y W7, antes de aparecer el Grub inicio Debian y todo perfecto, pero cuando apago, vuelvo a encender, y en el Grub elijo W7, no inicia, me lleva a la reparacion de errores o algo asi, y hace el Diagnostico pero dice que no puede encontrar el error, busque en google como arreglarlo desde la consola sin el CD (no lo tengo), y habia algunos comando como bootrec o algo asi, pero sigue dandome error y no me inicia, los datos no me preocupan porque Ubuntu inicia perfectamente y puedo recuperarlos desde ahi, pero no queria tener que formatear y volver a instalar todo.

Saludos

EDITO: Creo que he empeorado la cosa, porque no se que hice y ahora ya no me inicia el Grub y va directamente a Windows, los datos siguen si preocuparme porque tengo el CD desde el que instale Ubuntu asi que puedo iniciarlo y recuperarlos si es necesario, pero ahora el Grub ya no se  inicia, os comento todo: Enciendo el PC y pulso F8 repetidas veces, y en la pantalla que aparece entre las opciones que da ocurre en todas lo mismo, inicia Windows y cuando estan apareciendo las luces de colores, aparece un pantallon azul y al momento se apaga, pero con una opcion el pantallon azul se queda en la pantalla entonces pude ver los errores que da, en esa pantalla azul me dice que para solucionar el problema mire si hay virus es mi pc y que mire los drivers, pero no puedo iniciar, y tambien me dice que utilice el comando chkdsk /f para mirar si hay algo corrupto, pero esque al hacer ese comando me da lo siguiente:
CitarEl tipo de sistema de archivos es NTFS.
No se puede bloquear la unidad actual.
Windows no puede ejecutar la comprobación del disco en esete volumen porque esta protegido contra escritura
y los fallos que me ponia en la pantalla azul son:

0x0000007B (0x80786A50, 0xC0000034, 0x00000000, 0x00000000)

No se si esto tiene solucion, pero porfavor ayudenme.

Saludos
#27
GNU/Linux / LiveUSB de Debien persistente
13 Noviembre 2012, 19:19 PM
Buenas!

Os comento, acabo de crear un LiveUSB de Debian con unetbootin pero al reiniciarlo me di cuenta de que los cambios que habia hecho no se guardaban, entonces queria saber si hay alguna forma de hacerlo persistente o tendria que formatear el usb y volver a hacerlo de otra forma.

Saludos
#28
Dudas Generales / Que es Closed Shell System?
9 Noviembre 2012, 20:23 PM
Buenas!

Estuve leyendo sobre la Deep Web, solo leer, no he entrado y no tengo pensado hacerlo, dicen que la curiosidad mato al gato, y se que si entro puedo liarla mucho, asi que mejor no entro. A lo que iba, vi una imagen sobre los contenidos de la Deep Web, que no se si sera asi la realidad o no, pero ponia que para ir accediendo a los nivele mas "ocultos" se necesitaba Tor y despues ya para el nivel 5, el mas oculto de todo, en la foto lo llamaba "Marianas Web" se necesitaba un Closed Shell System, buscando por google lo unico que encontre fue que es una modificacion del hardware dificil de conseguir, pero que es exactamente?

Saludos
#29
GNU/Linux / Drivers para antena Ubiquiti
3 Noviembre 2012, 14:43 PM
Buenas!

Os explico, ya hace unos dias que particione el disco duro e instale Ubuntu 12.10 en mi PC, y llevo desde entonces rompiendome la cabeza para instala rlos drivers para la antena Wifi que tengo yo que es una WifiStation de Ubiquiti, he buscado y rebuscado por google y encontre ya varias cosas, pero nada me da resultado, y ya no se que hacer, porque Ubuntu esta muy bien pero sin internet no me vale de nada, porque no puedo instalar ni descargar nada, espero que me podais ayudar.

Saludos
#30
Programación C/C++ / Duda sobre el uso de break;
31 Octubre 2012, 20:00 PM
Pues queria saber si se puede usar break de esta forma:

#include <stdio.h>

int main()
{
int x;
x = getchar();
while (x <= 100)
if (x < 0)
puts("[!] VALOR NEGATIVO DE X [!]"); break;
return 0;
}


Supuestamente segun el libro que estoy leyendo el break haria que se salga del bucle while, pero al compilar el codigo me da error, no se si es un fallo mio o es que este uso de break no es correcto, se que otra forma de hacer esto seria dejando la condicion del while asi:

while (x <= 100 && x > 0)

Pero eso no me importa, lo que quiero saber es si el uso que le doy a break es correcto. El error que me da el compilador es el siguiente:

Citarla declaración break no está dentro de un bucle o switch

Saludos
#31
Programación C/C++ / Ayuda con ejercicio en C
28 Octubre 2012, 15:43 PM
Buenas!

Bueno pues de los ejercicios que me dejasteis en otro post eleji este para ir empezando:

CitarDado un numero entero positivo de segundos, se desea convertirlo a días.
En el archivo segundos.in se informa el número de segundos el cual
puede tener hasta 100 dígitos decimales, como una secuencia de dígitos.
La salida se grabará en el archivo segundos.out, cada respuesta en una
línea, y deberá contener:
1. Indicación de si el número de segundos dado equivale a un numero
entero de minutos o no (mediante una S para sí, y una N para no).
2. Indicación de si el número de segundos dado equivale a un numero
entero de horas, en el mismo formato que para la respuesta 1).
3. Indicación de si el número de segundos dado equivale a un numero
entero de días, en el mismo formato que para la respuesta 1).
4. Imprimir el numero de días, horas, minutos y segundos equivalente
al número de segundos dado.
Ejemplo:
Si segundos.in contiene:
5650560900
El archivo segundos.out debería contener:
S
N
S
65400 d, 0 h, 15 m, 0 s

Bueno yo cambie lo de archivos, porque aun no se manejarlos, y he llegado hasta los tres primeros puntos, pero el 4 no se como hacerlo, y queria que me dijerias a ver de que forma puedo hacerlo, no quiero codigo, solo como poder hacerlo, una idea para despues hacerlo yo, os dejo lo que llevo hecho:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>



int main()
{
uint64_t segundos;
double minutos;
double horas;
double dias;


printf("Porfavor introduzca los segundos: \n");
scanf("%llu", &segundos);

while(getchar() != '\n')
;

minutos = (double) segundos/60;


if (((int) minutos) != minutos)
printf("Numero entero de minutos: No\n");
else if (((int) minutos) == minutos)
printf("Numero entero de minutos: Si\n");

horas = (double) segundos/3600;

if (((int) horas) != horas)
printf("Numero entero de horas: No\n");
else if (((int) horas) == horas)
printf("Numero entero de horas: Si\n");

dias = (double) (segundos/3600)/24;

if (((int) dias) != dias)
printf("Numero entero de dias: No\n");
else if (((int) dias) == dias)
printf("Numero entero de dias: Si\n");


getchar();
return 0;
}


Saludos
#32
Bueno pues sigo con el mismo ejercicio que estoy haciendo en el ultimo post que hice hace poco tiempo, pero esta vez es otro problema, aqui os dejo el codigo que llevo:

#include <stdio.h>

int main()
{
long int segundos;
double minutos;


printf("Porfavor introduzca los segundos: \n");
scanf("%ld", &segundos);

while(getchar() != '\n')
;

minutos = segundos/60;

if (((int) minutos) == minutos)
printf("Numero entero de minutos: Si");
else
printf("Numero entero de minutos: No");


getchar();
return 0;
}


Lo primero que me pide el ejercicio es que segun el numero de segundos introducidos, analice si es un numero entero de minutos o no, y creo que este codigo esta bien, pero ponga el numero que ponga siempre me da que si, y ya lo he repasado mil veces y he probado a ponerlo de otras maneras pero siempre pasaba lo mismo, creo que estoy fallando en una tonteria pero no me doy cuenta.

Saludos

EDITO:He probado a cambiar la variable segundos de tipo int a tipo double y asi funciona perfectamente, y se que el error estaba el linea de asignacion a minutos despues del bucle while, pero sigo sin enetender el error

Saludos
#33
Pues esa es la duda, he empezado con un problema de los que me habeis dejado en otro post que he crado preguntando por algunos problemas y ya he elegido uno que me parece que pensando un poco puedo llegar a sacarlo, y ese es el primer problema que se me presenta, que tipo de variable puedo usar para almacenar un numero de 10 cifras, he probado de las siguientes maneras:

int x;
long int x;
long long int x;
unsigned long long int x;

Y ninguna me ha servido, la unica forma que se me ocurre es utilizando un array, pero aun no he llegado a leer sobre ellos y pereferia evitarlos. En el problema se me presenta que ese numero lo contiene un fichero, pero como tampoco se manejar ficheros, pues no puedo hacerlo de esa manera y creo que se puede hacer como quiero yo

Saludos
#34
Pues queria preguntaros a vosotros si se os ocurre asi algun programa para que pueda practicar yo lo que llevo aprendido hasta ahora (bucles, estructuras de control, funciones y poquito mas), porque ya he buscado por google muchos ejemplos pero esque la verdad los que he encontrado que pueda aplicar lo que he aprendido yo hasta ahora son bastante faciles, yo queria algo complejo, donde me tenga que poner a pensar para poder hacer el programa, pero es que ya he buscado bastante y lo que encuentro son problemas faciles donde por ejemplo se resuelve todo con un bucle y punto, y por eso os preguntaba a vosotros.

Saludos
#35
Programación C/C++ / Duda en los include
21 Octubre 2012, 14:27 PM
Pues queria saber cual de las dos formas es la correcta al incluir las librerias en C

#include <stdio.h>
#include "stdio.h"

Cual es la correcta? o son las dos?

Saludos
#36
Programación C/C++ / Error al compilar en Linux
20 Octubre 2012, 21:33 PM
Pues estaba probando a compilar el codigo de una calculadora que hice en windows, a hacerlo en Linux para ir viendo las diferencias porque me quiero pasar a Linux, el codigo es el que deje aqui:

http://foro.elhacker.net/programacion_cc/calculadora_hecha_en_c-t373901.0.html

Y lo unico que he cambiado es la linea

system("cls");

Por esta:

system("clear");

Pero me da error al compilar, que mas debo de cambiar del codigo para que me compile en Linux?

Saludos
#37
Programación C/C++ / Calculadora hecha en C
20 Octubre 2012, 18:44 PM
Pues acabo de terminar esta calculadora y queria vuestra opinion, algunas cosas mas que le pueda implementar,si encontrais algun fallo, etc

Aqui os dejo el codigo:

main.c
#include <stdio.h>
#include "funciones.h"

int main() {

int op;

do {

imprimir_menu();


scanf("%d", &op);
while (getchar() != '\n')
;
system("cls");
switch (op) {

case 1:
sumar();
getchar();
break;

case 2:
restar();
getchar();
break;

case 3:
multiplicar();
getchar();
break;

case 4:
dividir();
getchar();
break;

case 5:
potencia();
getchar();
break;

case 6:
raiz_cuadrada();
getchar();
break;

case 7:
seno();
getchar();
break;

case 8:
coseno();
getchar();
break;

case 9:
tangente();
getchar();
break;

case 10:
break;

default:
printf("Ha elejido una opcion incorrecta\n");
break;
}//fin del switch

}while (op != 10);

return 0;
}


funciones.h
#include <math.h> //para potencia y raiz cuadrada

void imprimir_menu(void) {
system("cls"); //limpia la pantalla al volverse a ejecutar el do-while del archivo main.c
printf("Elija una opcion:\n\n");
printf("*********************************\n");
printf("*\t [1] Sumar\t\t*\n");
printf("*\t [2] Restar\t\t*\n");
printf("*\t [3] Multiplicar\t*\n");
printf("*\t [4] Dividir\t\t*\n");
printf("*\t [5] Potencia\t\t*\n");
printf("*\t [6] Raiz cuadrada\t*\n");
printf("*\t [7] Seno\t\t*\n");
printf("*\t [8] Coseno\t\t*\n");
printf("*\t [9] Tangente\t\t*\n");
printf("*\t [10] Salir\t\t*\n");
printf("*********************************\n\n");
return;
}



void sumar(void) {
double num1, num2;
printf("\nIntroduzca los dos numeros a sumar: \n");
scanf("%lf %lf", &num1, &num2);
while (getchar() != '\n')
;
printf("\n%lf", num1 + num2);
return;


}

void restar(void) {
double num1, num2;
printf("\nIntroduzca los dos numeros a restar: \n");
scanf("%lf %lf", &num1, &num2);
while (getchar() != '\n')
;
printf("\n%lf", num1 - num2);
return;


}

void multiplicar(void) {
double num1, num2;
printf("\nIntroduzca los dos numeros a multiplicar: \n");
scanf("%lf %lf", &num1, &num2);
while (getchar() != '\n')
;
printf("\n%lf", num1 * num2);
return;


}

void dividir(void) {
double num1, num2;
printf("\nIntroduzca los dos numeros a dividir: \n");
scanf("%lf %lf", &num1, &num2);
while (getchar() != '\n')
;
printf("\n%lf", num1 / num2);
return;


}

void potencia(void) {
double num1, num2;
printf("\nIntroduzca la base: \n");
scanf("%lf", &num1);
while (getchar() != '\n')
;
printf("Introduzca el exponente: \n");
scanf("%lf", &num2);
while (getchar() != '\n')
;
printf("\n%lf", pow(num1, num2));
return;


}

void raiz_cuadrada(void) {
double num1;
printf("\nIntroduzca el numero: \n");
scanf("%lf", &num1);
while (getchar() != '\n')
;
printf("La raiz cuadrada es: %lf \n", sqrt(num1));

return;


}

void seno(void) {
double num1;
printf("\nIntroduzca el numero: \n");
scanf("%lf", &num1);
while (getchar() != '\n')
;
printf("El seno es: %lf \n", sin(num1));

return;


}

void coseno(void) {
double num1;
printf("\nIntroduzca el numero: \n");
scanf("%lf", &num1);
while (getchar() != '\n')
;
printf("El coseno es: %lf \n", cos(num1));

return;


}

void tangente(void) {
double num1;
printf("\nIntroduzca el numero: \n");
scanf("%lf", &num1);
while (getchar() != '\n')
;
printf("La tangente es: %lf \n", tan(num1));

return;


}
#38
Programación C/C++ / Cambios de Windows a Linux
13 Octubre 2012, 21:23 PM
Pues acabo de instalar Ubuntu en mi PC, junto con Windows, y ya probe a hacer el tipico Hola Mundo y a compilarlo desde Linux, y la verdad me gusta eso de que el compilador ya venga con el sistema, no llevo mucho tiempo con esto de la programacion, la verdad es que de C he leido hasta funciones y poco mas, y queria saber las diferencias que hay de programar en Linux a hacerlo en Windows, quiero decir que voy a seguir programando para Windows, pero poco a poco con el tiempo quiero deshacerme de el por completo.

Saludos
#39
el ambito de una variable una variable automatica puede ser menor que una funcion? una instruccion por ejemplo:
for (auto int i = 5; i < count; ++i)
{
/* code */
}


Es decir, que el valor 5 para la variable solo valga para este bucle, no se si me explico, es que en el libro que estoy leyendo dice que si pero no da ningun ejemplo sobre como se puede utilizar de esta manera.

Saludos
#40
Pues estoy leyendo sobre la recursividad y estoy totalmente perdido, no entiendo nada, dice que las llamadas a la funcion no se realizan en el momento de la llamada, sino que se acumulan hasta cumpla una condicion, y despues se ejecutan en orden inverso, es decir, que la primera llamada que se hizo es la ultima en ejecutarse?
Alguien amable podria explicarme esto de una forma algo mas facil, porque estoy muy perdido.

Gracias

EDITO: a ver, algo creo que voy entendiendo, de ejemplo me trae este codigo:

#include <stdio.h>

#define EOLN '\n'

void inverso(void);

int main() {
printf("Introduce una linea de texto debajo: \n");
inverso();
}

void inverso(void) {
char c;

if((c = getchar) != EOLN) inverso();
putchar(c);
return;
}


Antes de nada, no he compilado el codigo, voy a fiarme del libro, A ver si me explico y lo he entendido bien, este programa se supone que escribe el texto introducido al reves, ejemplo:

Citarhola - aloh

Cuaado tu introduces una letra, por ejemplo a, no la escribe, sino que vuelve a llamar a la funcion, es decir entra en bucle ejecutando la linea: if((c = getchar) != EOLN) inverso();hasta que la condicion del if se cumpla, entonces como segun el libro el orden de las llamdas es inverso, la primera letra que introduje sera la ultima en mostrarse, y asi con el resto de caracteres, estoy en lo cierto?

Espero haberlo entendido bien, porque es el ultimo punto de este tema y estoy deseando pasar de tema, pero no sin antes haberlo entendido todo perfectamente.

Gracias de nuevo
#41
No se si se entiende la pregunta, a ver que lo explico, por ejemplo, yo tengo una variable entera int a = 2; y una funcion cualquiera que modifica su valor, entonces antes de llamar a la funcion su valor inicial es 2, al llamar la funcion este valor cambia, la pregunta es, ¿despues de que se ejecute la funcion y se vuelva a main(), el valor de a seguira siendo 2 o habra adoptado el valor que se le da en la funcion?

No se si me he explicado correctamente.

Saludos.
#42
En el libro que estoy leyendo sobre C, venia un ejemplo de un programa de como utilizar funciones, aqui el programa:

la funcion main:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define SEMILLA 12345

void juego(void);
int tirada(void);

int main() {

char respuesta = 'S';

printf("Bienvenido al juego CRAPS\n\n");
printf("Para lanzar los dados, pulsa Intro\n\n");

srand(SEMILLA);

while (toupper(respuesta) != 'N') {
juego();
printf("\nDeseas jugar de nuevo? (S/N) ");
scanf(" %c", &respuesta);
printf("\n");

}
printf("Adios, que lo pases bien");
}


la funcion juego:

void juego(void) {

int puntos1;
int puntos2;
char nada;

printf("\nPor favor lanza los dados...");
scanf("%c", &nada);
printf("\n");
puntos1 = tirada();
printf("\n%2d", puntos1);

switch(puntos1) {

case 7:
case 11:

printf(" - Felicidades! Ganaste a la primera tirada\n");
break;

case 2:
case 3:
case 12:

printf(" - Lo siento! Perdiste en la primera tirada\n");
break;

case 4:
case 5:
case 6:
case 8:
case 9:
case 10:

do {

printf(" - Lanza los dados de nuevo...");
scanf("%c", &nada);
puntos2 = tirada();
printf("\n%2d", puntos2);
} while (puntos2 != puntos1 && puntos2 != 7);

if (puntos2 == puntos1)
printf(" - Ganas por igualar tu primera tirada\n");
else
printf(" - Pierdes por no igualar tu primera tirada");
break;
}
return;
}


la funcion tirada:

int tirada(void)  {

float x1;
float x2;
int n1;
int n2;

x1 = rand() / 32768.0;
x2 = rand() / 32768.0;

n1 = 1 + (int) (6 * x1);
n2 = 1 + (int) (6 * x2);

return(n1 + n2);
}


Entiendo todo perfectamente, pero donde me pierdo es en las funciones rand() y srand(), en la funcion tirada entiendo todas las operaciones que se hacen en ella para obtener los numeros, lo que no entiendo es para que se utiliza la funcion srand() y la constante SEMILLA, en el libro viene explicado pero no logro entenderlo, si alguien me lo puede explicar de alguna forma mas facil, gracias,


Saludos
#43
Programación C/C++ / Problema con funcion
30 Septiembre 2012, 00:02 AM
Pues en el libro que estoy leyendo he empezado con las funciones y para ir probando intente cambiar un codigo que tenia yo, usando una funcion, aqui el codigo original:

#include <stdio.h>

int main() {

   int i;
   char cadena [80];
   scanf("%s%c", cadena);
   for (i=0;cadena [i]!='\0';i++);
   printf ("\nEl texto tiene %d caracteres.\n",i);
   printf ("\nPresione ENTER para salir:");
   while (getchar()!='\n')
       ;
   return 0;
}


Y aqui el codigo usando una funcion:

#include <stdio.h>

int contador(int i, char letras){
i = 0;
for (i=0;letras [i]!='\0';++i);
return i;

}

int main() {

   int x;
   char cadena [80];
   scanf("%s%c", cadena);
   x = int contador(int i, char cadena);
   printf ("\nEl texto tiene %d caracteres.\n", x);
   printf ("\nPresione ENTER para salir:");
   while (getchar()!='\n')
       ;
   return 0;
}


Al compilarlo el segundo, me da los sigueintes errores:

En la funcion 'contador': 12:19: el valor del subindice no es ni matriz ni puntero ni vector

22:9 error: expected expression before 'int'

El primer fallo creo lo entiendo, se refiere al subindice de letras, letras, pero no entiendo el fallo, el segundo ya ni idea.

Saludos
#44
GNU/Linux / Editor de codigo
29 Septiembre 2012, 16:41 PM
Pues en breves ya voy a instalar Ubuntu en mi pc, junto con Windows, y queria saber que editor de codigo me recomendais para C, se que para compilar se puede hacer por consola asi que solo quiero un buen editor de texto. Yo en Windows utilizo el Sublime Text 2, estoy muy contento con el, y tambien lo hay para Linux, pero queria contar con vuestra opinion, sino instalare tambien el Sublime Text 2.

Saludos
#45
Programación C/C++ / Duda con scanf
29 Septiembre 2012, 11:23 AM
En un ejemplo de un codigo en un libro que estoy leyendo, me he encontrado con esta linea:

scanf("%[^\n]", linea);

La parte que no entiendo es la de "%[\n]", creo que sirve para guardar la linea de texto introducida en el array linea, pero sin incluir el salto de linea, aunque no estoy del todo seguro, queria saber exactamente para que sirve eso exactamente.

Saludos