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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: 1 2 [3] 4
21  Programación / Programación C/C++ / Re: cómo comparar una variable string con una cadena en C en: 6 Febrero 2016, 15:04 pm
Hola fary.
Estoy muy agradecido por tu aporte. A raiz del mismo me he puesto a investigar y e aprendido un montón. Me costó mucho entender tu código, ya que contiene funciones que nunca había utilizado.

En este caso, no pude compilarlo, ya que contiene la función itoa. Me tira el error "referencia a itoa sin definir".
Busqué un reemplazo para la misma y me encontré con la función sprintf. El programa quedó así:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
       int dia;
       int anho;
       char mes[20];
       int i =0;
       char * meses[12] = {"enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"};
    
       puts("Ingrese una fecha escrita en modo usual, por ejemplo 7 noviembre 1991.");
       scanf("%i %s %i",&dia,&mes,&anho);
    
       for (i = 0; i < 12; i++)
       {
          if (strcmp(meses, mes) == 0)
          {
             memset(mes,0,20);
             sprintf(mes,"%i",i+1);
             break;
          }
       }
    
       printf("La fecha ingresada es: %d %s %d",dia,mes,anho);
    
       return 0;
    }

Luego, analizando un poco más, me di cuenta de que no hacía falta utilizar la funcion itoa ni de la sprintf, y lo resolví de la siguiente manera:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
       int dia;
       int anho;
       char mes[20];
       int i =0;
       char * meses[12] = {"enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"};
    
       puts("Ingrese una fecha escrita en modo usual, por ejemplo 7 noviembre 1991.");
       scanf("%i %s %i",&dia,&mes,&anho);
    
       for (i = 0; i < 12; i++)
       {
          if (strcmp(meses, mes) == 0)
          {
             break;
          }
       }    
       printf("La fecha ingresada es: %d %i %d",dia,i+1,anho);
       return 0;
    }

Evidentemente este es un programa mucho más optimizado que el que hice en un principio. Nuevamente, les doy las gracias a todos!
Saludos :)
22  Programación / Programación C/C++ / Re: cómo comparar una variable string con una cadena en C en: 5 Febrero 2016, 13:03 pm
Bueno sí, acepto que no he buscado mucho en google.

Pude encontrar la solución. Hice uso de la funcion strncmp. La encontré por el comentario de Eternal.
De paso comento que el ejercicio que estaba resolviendo es este.

// Escribir un programa que acepte fechas escritas de modo usual y las visualice como tres números. Por ejemplo, la entrada: 15 febrero 2008 producirá la salida 15 2 2008.

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(){
  4. int dia;
  5. char mes[20];
  6. int anho;
  7. char ene[]="enero";
  8. char feb[]="febrero";
  9. char mar[]="marzo";
  10. char abr[]="abril";
  11. char may[]="mayo";
  12. char jun[]="junio";
  13. char jul[]="julio";
  14. char ago[]="agosto";
  15. char sep[]="septiembre";
  16. char oct[]="octubre";
  17. char nov[]="noviembre";
  18. char dic[]="diciembre";
  19.  
  20. puts("Ingrese una fecha escrita en modo usual, por ejemplo 7 noviembre 1991.");
  21. scanf("%i %s %i",&dia,&mes,&anho);
  22. if(!(strncmp(mes,ene,20)))
  23. strcpy(mes,"1");
  24. if(!(strncmp(mes,feb,20)))
  25. strcpy(mes,"2");
  26. if(!(strncmp(mes,mar,20)))
  27. strcpy(mes,"3");
  28. if(!(strncmp(mes,abr,20)))
  29. strcpy(mes,"4");
  30. if(!(strncmp(mes,may,20)))
  31. strcpy(mes,"5");
  32. if(!(strncmp(mes,jun,20)))
  33. strcpy(mes,"6");
  34. if(!(strncmp(mes,jul,20)))
  35. strcpy(mes,"7");
  36. if(!(strncmp(mes,ago,20)))
  37. strcpy(mes,"8");
  38. if(!(strncmp(mes,sep,20)))
  39. strcpy(mes,"9");
  40. if(!(strncmp(mes,oct,20)))
  41. strcpy(mes,"10");
  42. if(!(strncmp(mes,nov,20)))
  43. strcpy(mes,"11");
  44. if(!(strncmp(mes,dic,20)))
  45. strcpy(mes,"12");
  46.  
  47. printf("La fecha ingresada es: %d %s %d",dia,mes,anho);
  48. }
  49.  
Me parece que este programa se podría optimizar, pero no concozco de las herramientas para hacerlo aún.
Saludos!
23  Programación / Programación C/C++ / Re: cómo comparar una variable caracter con un código ascii en C en: 5 Febrero 2016, 11:57 am
TIenes razón, se me pasó por alto jejeje. Gracias por la aclaración :)
24  Programación / Programación C/C++ / cómo comparar una variable string con una cadena en C en: 5 Febrero 2016, 11:56 am
Chicos, en el siguiente código:

#include <stdio.h>

int main(){
    char mes[20];

    puts("Ingrese el nombre de un mes");
    scanf("%s",&mes);
    if(mes=="enero")
        puts("El mes ingresado es enero");
    return 0;
}

resulta que no es la forma correcta de comparar una variable string con una cadena, ya que no entra en el if. Cuál es el error.
25  Programación / Programación C/C++ / Re: cómo comparar una variable caracter con un código ascii en C en: 5 Febrero 2016, 11:28 am
Bueno, luego de un poco de mal entendidos, encontré lo que buscaba! :-)

Lo que aprendí es que un caracter expresado en código ascci es SÓLAMENTE un número. Así, si a una variable, por ejemplo, car, le quiero asignar la letra N, lo puedo hacer de estas dos formas:

char car='N';
char car=78;

donde 78 es la N expresado en el código ascci. Esa era mi duda.
Ahora bien, si yo quiero hacer un programa que dado un caracter me diga si el mismo es una letra o no, podría ser este:

#include <stdio.h>

int main(){
   char car;
   
   puts("Ingrese un caracter: ");
   scanf("%c",&car);
   
   if((car>=65 && car<=90) || (car>=97 && car<=122))
      puts("El caracter es una letra.");
   else
      puts("El caracter no es una letra");
   return 0;
}

Desde ya muchas gracias a todos por su tiempo y expliaciones.

fary, en el comentaro anterior mío, me había confundido en la condición del if. Debería haber puesto yo:
  if(car=78){
  puts("El caracter es una N")
}
Cabe destacar, que yo no me esperaba que el 78 en ese caso podía representar por sí una letra (le letra N), ya que, como aclaré antes, pensé que tenía que anteponerle algún símbolo. Fue una coincidencia jaja
26  Programación / Programación C/C++ / Re: cómo comparar una variable caracter con un código ascii en C en: 5 Febrero 2016, 10:35 am
Es que no puedo poner
  if(78){
     puts("El caracter es una N");
  }
Lo que preciso saber es qué se ponde adentro de esa condicion, seguro que es algo muy simple, como anteponer un símbolo delante del número que hace referencia al código ascii.

Supongo eso, porque en otros lenguajes como en pascal se hace eso, aunque soy conciente que en C puede ser totalmente distinto.

27  Programación / Programación C/C++ / Re: cómo comparar una variable caracter con un código ascii en C en: 5 Febrero 2016, 10:14 am
Hola chicos, disculpen la demora en responder.

Mafus, se que puede haber una librería, pero en mi caso, yo quiero hacer la función. En ese sentido, se que cada caracter se asocia con un número del 0 al 255, pero no sé como expresarlo en el código.



fary, cómo hago para comparar la variable caracter con un rango de caracteres expresados en el cógio ascii sabiendo qué se asocian con esos números.

ivancea96, sé que se puede hacer de esa forma, pero no es la que busco.

Debería ser algo así:
 if(var>#70 && var<#90)
{
   puts("El cacarter es tal cosa");
}
28  Programación / Programación C/C++ / cómo comparar una variable caracter con un código ascii en C en: 2 Febrero 2016, 07:56 am
Hola gente.

Tengo que resolver el siguiente problema:

"Determinar si el carácter asociado a un código introsucido por teclado corresponde a un carácter alfabético, dígito, de puntuación, especial o no imprimible".

Para ello, lo que quiero hacer es comparar la variable donde se almacena el caracter introducido con un cierto rango de caracteres expresados en código ascii, pero no encuentro cómo.

En pascal, si no mal recuerdo, se hace uso del símobolo #, pero en C nosé.

Algunos puede aportar algo para resolver este dilema? jaja

Desde ya gracias!

29  Programación / Programación C/C++ / Re: consulta sobre el uso del ampersand en variables de tipo string en: 20 Enero 2016, 14:15 pm
Hola Yoel, tenía conocimiento de eso. Lo que no sabía es que exitía el código de formato %p que te permite mostrar la dirección de memoria de un puntero. La verdad chicos que me sirven muchisimo sus respuestas. Gracias! :)



Hola D4RIO, te aseguro que si tengo más dudas jajaja. Es muy interesante la explicación que diste. Me gusta saber cosas de ese nivel. Aun me falta mucho por aprender y hay algunas cosas que no entendí de las que dijiste. Pero muy pronto lo haré. Gracias por su tiempo y dedicación chicos.
30  Programación / Programación C/C++ / Re: consulta: leer 1 int y un char en una sola sentencia y mostrarlos por separados en: 19 Enero 2016, 04:43 am
Hola crack81.

Efectivamente he probado con tus ejemplos y obtuve los resultados que comentaste. Ahora una pequeña duda. Si yo ingreso la entrada 44 c  y doy enter. (Observar que hay un espacio entre medio). El programa me muestra por pantalla:
44
c

Ahora, qué sucede con el espacio que dejo entre medio. Por qué ese espacio no es leido como un caracter? En todo caso se podría mostrar por pantalla sólo 44 y abajo un espacio en blanco que no se vería.  ¿Sabes a qué se debe esto?
Páginas: 1 2 [3] 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines