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ú

Mensajes - DickGumshoe

#71
Programación C/C++ / Re: Proyecto C/C++
23 Septiembre 2012, 20:46 PM
Cita de: 0xDani en 23 Septiembre 2012, 20:42 PM
Ya lo digo a mi me gusta la idea del antivirus/malware, y pienso que lo bueno seria hacerlo para algun SO que no fuera windows, que es el SO para el que mas se programan estas cosas.



Lo mismo digo, me gusta la idea. No tengo actualmente ninguna distribución de Linux instalada en mi ordenador pero si acordamos hacer algo para dicho SO, me lo descargaría.

El chat puede ser una buena idea, siempre que sea portable.
#72
Programación C/C++ / Re: Proyecto C/C++
23 Septiembre 2012, 20:12 PM
Cita de: lluk en 23 Septiembre 2012, 20:10 PM
mm, ok
yo propongo un tema (que no se si es difícil o no) que llevo mucho tiempo queriendo hacer pero nunca se me dio la oportunidad.
Sería algo relacionado con los antivirus y el malware (programar un antivirus o lo que sea xD)
lo añado en la lista de temas del primer mensaje y vosotros me decís que os parece

La idea bien está. No sé cómo se hará un antivirus, pero me imagino que será muy difícil...
#73
Programación C/C++ / Re: Proyecto C/C++
23 Septiembre 2012, 17:40 PM
Como dice 0xDani, quizá haya otros proyectos más interesantes, pero si terminamos haciendo la agenda, aquí dejo una que hice hace bastante tiempo:



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

   int main()
   {

       struct
       {
         char nombre[10];
         char direccion[15];
         int movil;
         char email[20];
          int dia, mes, ano;
       }datos[100];

       char lineas[500],comprobar[10];

       FILE* fichero;

       int opcion,posicion,tamano,i=0,j,aux,c;

       fichero = fopen("agenda.dat", "r+b");

       if(fichero != NULL)
       {

       while(!feof(fichero))
       {
         c=fscanf(fichero,"%s",datos[i].nombre);
         fscanf(fichero,"%s",datos[i].direccion);
         fscanf(fichero,"%d",&datos[i].movil);
         fscanf(fichero,"%s",datos[i].email);
         fscanf(fichero,"%d",&datos[i].dia);
         fscanf(fichero,"%d",&datos[i].mes);
         fscanf(fichero,"%d",&datos[i].ano);
         if(c!=-1)i++;
       }


      rewind(fichero);

       do
       {
       do
       {
       printf("Fichas guardadas: %d\n",i);
       printf("Elija una opcion\n");
       printf("1. Introducir datos\n");
       printf("2. Visualizar nombres de las fichas existentes\n");
       printf("3. Mostrar todos los datos de una persona\n");
       printf("4. Salir\n");
       scanf("%d",&opcion);
       getchar();

       switch(opcion)
       {
         case 1:
              if(i>99)
              {
                printf("No caben mas fichas!");
                break;
              }
              printf("Introduce un nombre: ");
              gets(datos[i].nombre);

              printf("Introduce una direccion: ");
              gets(datos[i].direccion);

              printf("Introduce un movil: ");
              scanf("%d",&datos[i].movil);
              getchar();

              printf("Introduce correo electronico: ");
              gets(datos[i].email);

              printf("Introduce dia de nacimiento: ");
              scanf("%d",&datos[i].dia);
              getchar();

              printf("Introduce mes de nacimiento: ");
              scanf("%d",&datos[i].mes);
              getchar();

              printf("Introduce ano de nacimiento: ");
              scanf("%d",&datos[i].ano);
              getchar();
              i++;
              break;

         case 2:
              for(j=0;j<i;j++)
              {
                printf("%d. %s\n", j+1, datos[j].nombre);
              }

              break;
         case 3:
             printf("Introduce el nombre de la persona de la que desea visualizar los datos:");
            scanf("%s",comprobar);
             for(j=0;j<i;j++)
             {
               if(strcmp(datos[j].nombre,comprobar)==0)
               {
                 printf("Nombre: %s\n",datos[j].nombre);
                 printf("Direccion: %s\n",datos[j].direccion);
                 printf("Movil: %d\n",datos[j].movil);
                 printf("Email: %s\n",datos[j].email);
                 printf("Dia de nacimiento: %d\n",datos[j].dia);
                 printf("Mes de nacimiento: %d\n",datos[j].mes);
                 printf("Ano de nacimiento: %d\n",datos[j].ano);
               }
             }
              break;
         case 4:
              break;

         default:
                 printf("Opcion no valida!\n");
       }

       }while(opcion<1||opcion>4);

       }while(opcion!=4);
       }
       aux=i;
       printf("Guardando datos en la agenda ...\n\n");

       for(i=0;i<aux;i++)
       {
         fprintf(fichero, "%s\n", datos[i].nombre);
         fprintf(fichero, "%s\n", datos[i].direccion);
         fprintf(fichero, "%d\n", datos[i].movil);
         fprintf(fichero, "%s\n", datos[i].email);
         fprintf(fichero, "%d\n", datos[i].dia);
         fprintf(fichero, "%d\n", datos[i].mes);
         fprintf(fichero, "%d\n", datos[i].ano);
         }
      fclose(fichero);
       printf("\n\nPulse una tecla para continuar");
       getchar();
       return 0;
   }
#74
Programación C/C++ / Re: Proyecto C/C++
23 Septiembre 2012, 15:26 PM
Yo lo que se da en los libros de C (las funciones básicas, bucles, punteros, funciones, vectores/matrices, cadenas de caracteres, etc.) lo sé, pero me tengo que adaptar a usar librerías externas, ya que de estas he usado pocas.
#75
Programación C/C++ / Re: Proyecto C/C++
23 Septiembre 2012, 14:39 PM
Yo lo mismo que Caster. Sé poco de bibliotecas externas, así que si hay alguna parte en la que realizar algo básico estaría dispuesto a ayudar.
#76
Programación C/C++ / Re: Duda
22 Septiembre 2012, 22:59 PM
No se pausa porque con
Código (cpp) [Seleccionar]
cin>>mesa; dejas "basura" en el buffer del teclado, y
Código (cpp) [Seleccionar]
cin.peek(); en este caso lo que hace es limpiar dicho buffer. Para solucionarlo, solo tienes que poner dos veces
Código (cpp) [Seleccionar]
cin.peek(); (u otro similar). El primero limpiará el buffer, y el segundo pausará el programa.

Un saludo.
#77
Programación C/C++ / Re: Usos fwrite, fread
12 Septiembre 2012, 01:55 AM
La diferencia es que, si tienes un vector de n elementos, con fprintf tendrías que recorrerlo con un bucle, sin embargo con fwrite indicas el número de elementos a poner en el fichero y listo, ya están guardados. Lo mismo con fread respecto a fscanf.

Ejemplo:



#include <stdio.h>

int main()
{

int V[13] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int i;
int datos[13];
FILE *fp;

fp = fopen("fichero.txt", "w+");
for(i=0;i<13;i++) fprintf(fp, "%d ", V[i]); //Ponemos en fichero
rewind(fp); //Situamos el cursor al principio del fichero
for(i=0;i<13;i++) fscanf(fp, "%d", &datos[i]); //Leemos los datos del fichero
fclose(fp);
for(i=0;i<13;i++) printf("%d    ", datos[i]); //Imprimimos los datos
return 0;

}



#include <stdio.h>

int main()
{

int V[13] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int i;
int datos[13];
FILE *fp;

fp = fopen("fichero.txt", "w+");
fwrite(V, sizeof(int), 13, fp);  //Ponemos en fichero
rewind(fp); //Situamos el cursor al principio del fichero
fread(datos, sizeof(int), 13, fp); //Leemos los datos del fichero
fclose(fp);
for(i=0;i<13;i++) printf("%d    ", datos[i]); //Imprimimos los datos
return 0;

}


Además, como bien ha dicho el compañero Tremolero, es por seguridad. Intenta meter los datos con fwrite en un fichero *.txt, y verás que no entiendes lo que pone. Pero, sin embargo, al leerlo con fread, sí entenderás su contenido.

Un saludo.
#78
Programación C/C++ / Re: Error en programa
7 Septiembre 2012, 18:24 PM
Qué raro... A mí me imprime el texto primero en hexadecimal y después en ASCII. Si pongo como archivo el código fuente de mi anterior mensaje, la salida es esta:

Escriba la ruta del archivo: l.c
23 69 6E 63 6C 75 64 65 20 3C 73 74 64 69 6F 2E 68 3E A A 69 6E 74 20 6D 61 69 6E 28 29 A 7B
A 20 20 20 20 46 49 4C 45 20 2A 66 70 3B A 20 20 20 20 69 6E 74 20 63 6F 75 6E 74 3B A 20 2
0 20 20 63 68 61 72 20 63 61 72 61 63 74 65 72 3B 20 2F 2F 41 71 75 FFFFFFED 20 6E 6F 20 65
73 20 6E 65 63 65 73 61 72 69 6F 20 69 6E 69 63 69 61 6C 69 7A 61 72 20 65 6C 20 63 61 72 FF
FFFFE1 63 74 65 72 A 20 20 20 20 63 68 61 72 20 66 69 6C 65 6E 61 6D 65 5B 34 30 5D 3B A 20
20 20 20 70 72 69 6E 74 66 28 22 45 73 63 72 69 62 61 20 6C 61 20 72 75 74 61 20 64 65 6C 20
61 72 63 68 69 76 6F 3A 20 22 29 3B A 20 20 20 20 67 65 74 73 28 66 69 6C 65 6E 61 6D 65 29
3B A 20 20 20 20 66 70 20 3D 20 66 6F 70 65 6E 28 66 69 6C 65 6E 61 6D 65 2C 22 72 22 29 3B
A A 2F 2F 4E 6F 20 68 61 63 65 20 66 61 6C 74 61 20 65 6C 20 62 75 63 6C 65 20 77 68 69 6C
65 2C 20 70 75
35 105 110 99 108 117 100 101 32 60 115 116 100 105 111 46 104 62 10 10 105 110 116 32 109 9
7 105 110 40 41 10 123 10 32 32 32 32 70 73 76 69 32 42 102 112 59 10 32 32 32 32 105 110 11
6 32 99 111 117 110 116 59 10 32 32 32 32 99 104 97 114 32 99 97 114 97 99 116 101 114 59 32
47 47 65 113 117 -19 32 110 111 32 101 115 32 110 101 99 101 115 97 114 105 111 32 105 110
105 99 105 97 108 105 122 97 114 32 101 108 32 99 97 114 -31 99 116 101 114 10 32 32 32 32 9
9 104 97 114 32 102 105 108 101 110 97 109 101 91 52 48 93 59 10 32 32 32 32 112 114 105 110
116 102 40 34 69 115 99 114 105 98 97 32 108 97 32 114 117 116 97 32 100 101 108 32 97 114
99 104 105 118 111 58 32 34 41 59 10 32 32 32 32 103 101 116 115 40 102 105 108 101 110 97 1
09 101 41 59 10 32 32 32 32 102 112 32 61 32 102 111 112 101 110 40 102 105 108 101 110 97 1
09 101 44 34 114 34 41 59 10 10 47 47 78 111 32 104 97 99 101 32 102 97 108 116 97 32 101 10
8 32 98 117 99 108 101 32 119 104 105 108 101 44 32 112 117
Process returned 0 (0x0)   execution time : 3.190 s
Press any key to continue.


¿No te sale eso, o no es lo que querías?

¡Un saludo!
#79
Programación C/C++ / Re: Error en programa
7 Septiembre 2012, 15:55 PM
Hola.

Además de los errores que ya te ha comentado 0xDani, te digo unos cuantos más:

El bucle while no es necesario, ya que al salir del segundo for la variable carácter será EOF. En el segundo bucle for, imprimes el carácter, ya que pones '%c'. Para imprimir el ASCII, lo que tienes que hacer es poner '%d'.

Al salir del primer bucle for ocurre una cosa: la variable carácter es EOF. Por lo tanto, como en la condición del segundo for tienes que se repita mientras carácter sea distinto de EOF, no entrará, y no imprimirá el valor ASCII. Para evitarlo, debes darle un valor cualquiera a dicha variable entre un bucle y otro.

Por último, te recomiendo que cuando no vayas a volver a utilizar el fichero que has abierto, lo cierres con fclose(fp).

Aquí te dejo el código editado y comentado:


#include <stdio.h>

int main()
{
    FILE *fp;
    int count;
    char caracter; //Aquí no es necesario inicializar el carácter
    char filename[40];
    printf("Escriba la ruta del archivo: ");
    gets(filename);
    fp = fopen(filename,"r");

//No hace falta el bucle while, puesto que al salir del segundo "for" la variable carácter será EOF.
        for(count=0;(count<=280) && (caracter!=EOF); count++) //Aquí son ';', no ','
        {
            caracter=getc(fp);
            printf("%X ", caracter);
        }

        printf("\n");
        rewind(fp);
        caracter = 'a'; //Le damos un valor para que no sea EOF y pueda entrar en el bucle for.

        for(count=0;(count<=280) && (caracter!=EOF); count++)
        {
            caracter=getc(fp);
            printf("%d ", caracter);
        }

    fclose(fp);
    return 0;
}


Un saludo.
#80
Programación C/C++ / Re: eliminar vocales
6 Septiembre 2012, 17:44 PM
Avesudra, una pequeña anotación, AlonsoQ está estudiando C, y si no recuerdo mal no se pueden declarar las variables justo cuando la vas a usar, debe ser al principio de la función (en C++ sí que se puede).

Un saludo.