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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Temas
Páginas: [1] 2 3
1  Programación / PHP / ¿Es esta expresión regular correcta? en: 8 Febrero 2012, 17:36 pm
Hola buenas, he creado la siguiente expresión regulara para validar correos dadas unas referencias.
La he probado y parece cumplir con todo, pero en un momento el script se me watufeo, y parecía darme tan solo 0, como si el patrón insertado no fuera valido, ahora no me fió si estoy cometiendo algún fallo de sintaxis en dicho patrón.

Si alguien puede echarle un vistazo y decirme si es correcta la expresión o no, lo agradecería.

Código
  1. /^(?=^(\w+[.\-+_]?\w+)+(\@{1}(\w+[.\-]?\w+)+)(\.{1}[a-z]{2,4})$)[\w.+_\-]{3,6}[@\w.\-]{1,13}[a-z]{2,4}$/

Un saludo.
2  Programación / PHP / Problema con expresión regular PCRE en: 6 Febrero 2012, 14:50 pm
Hola buenas, a ver si podéis echarme una mano con el siguiente problema que tengo:

Estoy usando expresiones regulares PCRE para validar un correo:
En la primera parte antes de la arroba, necesito hacer lo siguiente y no se como hacerlo, quiero que el máximo número de caracteres de la parte local del correo (antes de la arroba) sean 63 como máximos, 1 como mínimo, pero quiero que esos 63 caracteres, sean letras, empiecen por letras, terminen por letras, y entre medios pueda llevar un símbolo de los especificados en la clase carácter pero no dos símbolos juntos.

Dejo el código a continuación:
Código
  1. $test = preg_match('/^[\w+(\_\-\.\+)?\w+]{1,63}\@{1}(\w+[\.\-]?\w+)+\.{1}[a-z]{2,4}$/','holaacvcv3@bba-sfd-dfd.com');
  2.  
La parte a tocar del patrón sería la que se encuentra antes de la arroba, es decir:

Código
  1. [\w+(\_\-\.\+)?\w+]{1,63}

Eso no me funciona, ya que me valida cuando hay dos signos juntos.

Un saludo y gracias por todo.
3  Informática / Hardware / Problema con la placa base. en: 26 Septiembre 2011, 23:11 pm
Hola buenas, tengo un problema con mi ordenador, os expongo mas o menos lo que llevo hasta ahora experimentado para ver is podéis ayudarme.

Mi placa base es una Gigabyte MA790X-DS4 se escuchan pitidos largos que no cesan, el manual dice que se debe a que la tarjeta grafica no esta bien insertada, pero yo la he sacado y la he insertado varias veces y sin efecto, la cambie de slot y lo mismo.

Entonces la deje en ese mismo slot y cambie la ram de sitiio y el ordenador arranco, pero una vez en Windows se me colgo al reiniciar le volvía a pasar lo de los pitidos.

¿A que puede ser debido?

Un saludo.
4  Programación / Programación C/C++ / El dichoso error de fgets. en: 17 Mayo 2011, 00:47 am
Disculpad las molestias pero tengo el siguiente error:
He leído en este foro las cosas que no se deben hacer al programar en C, una de ellas era utilizar funciones como scanf que no tienen limite de caracteres insertados, para ello el tutorial proponer fgets, otras de las cosas sobre las que habla el manual es sobre el uso de fflush(stdin) que aunque la gente lo use para una cosa no sirve para eso, ya que este limpia el buffer de salida y no el de entrada.

El caso es que al usar fgets no me deja introducir los datos, ya que salta directamente a la siguiente linea, al poner fflush(studin) se soluciona pero eso no me vale, yo quiero saber por que es esto y una forma segura de solucionarlo y no con fflush(studin) y sus comportamientos caóticos.

El fragmento de código es este:

En main defino estas dos variables:                       
Código
  1. char tempnum;
  2. int dni = 0;
                       
Código
  1. case 'c': case 'C':
  2.                        printf("Introduzca el dni del medico a buscar: ");
  3.                        fgets(tempnum,11,stdin);
  4.                        if (tempnum[strlen(tempnum)-1] == '\n')
  5.                           tempnum[strlen(tempnum)-1] = '\0';
  6.                        sscanf(tempnum,"%d",&dni);
  7.                        search_listM(primero,dni);
  8.                        printf("Pulse una tecla para continuar.");
  9.                        getchar();
  10.                        break;

Un saludo.
5  Programación / Programación C/C++ / Función que retorna dos tipos distintos de datos. en: 16 Mayo 2011, 22:58 pm
Saludos.
Una duda que me ha surgido y no consigo resolver, quiero que una función devuelva un 1 en caso de que se haya hecho todo correctamente o un 0 en caso de error, pero a su vez esa función devolverá un puntero de estructura, ¿como puedo solucionar esto? ya que si pongo "return 1" por ejemplo me da error en la conversión de datos.

Un saludo.
6  Programación / Programación C/C++ / ¿Es normal hacer este tipo de conversiones de punteros void? en: 16 Mayo 2011, 15:27 pm
Hola, tengo la siguiente duda:

En una funcion convierto los punteros void según lo necesite, es decir según el que le pase, lo que no se si es esto es una practica aceptada en C, compilar y funcionar funciona pero no se si debe hacer o no, o hacer esto puede acarrear fallos en algunos programas.
Me gustaría saber si es algo así como una practica que se puede hacer pero que debe evitarse en el mayor de los casos.

Esta es la función, lo que hago es convertir al tipo "medicos" o "pacientes" dependiendo de si "opc" es 0 u 1.
Al hacer la llamada solo el puntero que le pase a la función puede ser tanto del tipo
"medicos" como del "pacientes".
Código
  1. bool val_dni(void *primero,int dni,bool opc){
  2.    medicos *auxM;
  3.    pacientes *auxP;
  4.    int m = 0;
  5.    int p = 0;
  6.    /* 0 para medicos, 1 para pacientes.
  7.        0 si no existe, 1 si existe.  
  8.     */
  9.  
  10.    if(opc == 1){
  11.  
  12.           auxP = (pacientes *)primero;
  13.           while(auxP != NULL){
  14.                        if(auxP->dni == dni){ return 1; }
  15.                        auxP = auxP->next;
  16.                     }
  17.           return 0;
  18.    }else{
  19.          auxM = (medicos *)primero;
  20.          while(auxM != NULL){
  21.                        if(auxM->dni == dni){return 1; }
  22.                        auxM = auxM->next;
  23.                     }
  24.          return 0;
  25.    }
  26. }

Un saludo.
7  Programación / Programación C/C++ / Sustitución de Break por otra cosa. en: 12 Mayo 2011, 17:48 pm
Hola buenas.

Tengo una duda, según tengo entendido el uso del break en C esta obsoleto, pero sin embargo tengo un while donde lo tengo que usar por fuerza, quiero saber si el problema es mio, es decir que estoy haciendo algo mal y ese break se puede sustituir por otra cosa, o es que en realidad hay casos donde el uso del break es esencial.

La estructura que uso ahora es esta:
Código
  1. while(1) {
  2. if(feof(fp)){break;}
  3. ...
  4. }

Ya que si uso esto:
Código
  1. while(!feof(fp)){
  2. ....
  3. }
me lee una vez de mas el archivo, es decir es como si se ejecutara el bucle una vez mas a lo que quiero..

Un saludo.
8  Programación / Programación C/C++ / Cargar Lista de un fichero con fseek a una lista auxiliar en el programa. en: 9 Mayo 2011, 17:34 pm
Hola buenas.

Tengo el siguiente problema que no consigo resolver y por mas que busco en el foro y en Internet no encuentro la forma de solucionarlo.

Tengo una lista en un fichero que previamente he insertado con fwrite, lo que quiero hacer es leer la lista de ese fichero con fseek y cargarla en una lista auxiliar para que el programa trabaje con ella (por ejemplo insertar datos) luego volvere a escribir el fichero entero y cada vez que quiera escribir en esa lista, la cargare en una auxiliar y trabajare con ella para volverla a guardar en el programa.

La función que he hecho para esto, es la siguiente:


Código
  1. medicos * read_fic(void){
  2. FILE *fp;
  3. medicos *aux,aux2,*first;
  4. fp = fopen("medicos.bin","r+b");
  5. fseek (fp, 0L, SEEK_SET);
  6. first = NULL;
  7.  
  8. do{
  9.   fread(&aux2,sizeof(medicos),1,fp);
  10.   aux = (medicos *)malloc(sizeof(medicos));
  11.  
  12.   if(first == NULL){first = aux;}
  13.   aux->dni = aux2.dni;
  14.   aux->fecha = aux2.fecha;
  15.   strcpy(aux->nombre,aux2.nombre);
  16.   strcpy(aux->apellidos,aux2.apellidos);
  17.  
  18.   /* sacar datos de una estructura dentro de una lista dentro de un fichero */
  19.  
  20.   strcpy(aux->direccion.calle,aux2.direccion.calle);
  21.   aux->direccion.bloque = aux2.direccion.bloque;
  22.   aux->direccion.numero = aux2.direccion.numero;
  23.  
  24.   aux->next = aux2.next;
  25.   /*
  26.    printf("#%d \t Fecha: %d",aux->dni, aux->fecha);
  27.    printf("\t#N: %s \t A: %s\t",aux->nombre, aux->apellidos);
  28.    printf("Calle: %s\n",aux->direccion.calle);
  29.    
  30.    
  31.    */
  32.   aux = aux->next;
  33.  }while(!feof(fp)); // (aux2.next != NULL);
  34.  
  35. fclose(fp);
  36. return first;
  37. }


El main quedaría así:
Código
  1. int main(){
  2.    medicos *primero;
  3.    primero = NULL;
  4.  
  5.   primero = read_fic();
  6. }

Pero esta función me da fallos de segmentación por todos lados, a parte de que estoy usando un puntero local a la función, por lo tanto el valor de aux se debería perder cuando retorne first que es un puntero al primer elemento de dicha lista, como resolvería este problema sin usar variables globales (por ejemplo haciendo que aux2 sea global).
De todas formas puede que tenga mas fallos a parte de ese, la función con la que cargo los datos del fichero en la lista.

Un saludo.
9  Programación / Programación C/C++ / Fallo de segmentacion con fgets y Array de cadenas. en: 3 Marzo 2011, 03:15 am
Saludos.

Tengo la siguiente duda, estoy implementando un array de cadenas de caracteres de la siguiente forma, pero me da fallo de segmentación cuando intento guardar los datos, necesito usar una función que controle el número de caracteres a insertar como fgets, pero no conozco ninguna y fgets me da dicho error.
Me gustaría saber por ocurra el fallo de segmentación y si hay alguna forma de solucionarlo.
Dejo el código a continuación:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef char *strings;
  6.  
  7. int main(){
  8.  
  9.    strings info_variable[4];
  10.  
  11.    fgets(info_variable[0],30,stdin);
  12.  
  13.    printf("%s",info_variable[0]);
  14.  
  15.    getchar();
  16.  
  17.    return 1;    
  18. }
  19.  
10  Programación / Programación C/C++ / Problema para pasar una lista a fichero con Fwrite en: 18 Febrero 2011, 02:30 am
Saludos.
Tengo el siguiente problema, quiero pasar una lista a un fichero, la lista tiene datos que yo previamente le he introducido y los he mostrado para verificar que los datos son correctos, el caso es que cuando intento pasar dicha lista un fichero de la siguiente forma con fwrite, solo me mete basura en el fichero.
Dejo el código a ver si podéis ayudarme:

Esta es la estructura de la lista:

Código
  1. typedef struct nodo_pacientes{
  2.         int dni;
  3.         int fecha;
  4.         int edad;
  5.         int medico;
  6.         struct nodo_pacientes *next;
  7.        }pacientes;
  8.  

Esta es la función que uso para escribir en el fichero a la cual le paso un puntero por referencia al primer elemento de la lista:

Código
  1. int list_fic(pacientes **primero){
  2. FILE *fp;
  3. pacientes *aux;
  4.  
  5. int b = 0;
  6. fp = fopen("pacientes.txt","wb");
  7. aux = *primero;
  8.  
  9. while(aux != NULL){
  10.  b = fwrite(&aux,sizeof(pacientes),1,fp);
  11.  aux = aux->next;
  12. }
  13.  
  14. fclose (fp);
  15. printf("\n\n %d",b);
  16. }

Un saludo, espero que podáis ayudarme.
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines