Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: alpha015 en 13 Marzo 2012, 23:04 pm



Título: Comparación individual de caracteres
Publicado por: alpha015 en 13 Marzo 2012, 23:04 pm
Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int c[61],i,j,x;
  4. FILE *pass;
  5.  
  6. main()
  7. {
  8. pass=fopen("password.txt", "r");
  9.  
  10. for (i=1; i<=60; i++)
  11. {
  12. fscanf(pass, "%c", &x);
  13. c[i]=x;
  14. }
  15.  
  16. for (i=1; i<=60; i++)
  17. {
  18.       for (j=48; j<=57; j++)
  19.       if (c[i] == j)  printf("%c", j);
  20.  
  21.       for (j='a'; j<='z'; j++)
  22.       if (c[i] == j)  printf("%c", j);
  23.  
  24.       for (j='A'; j<='Z'; j++)
  25.       if (c[i] == j)  printf("%c", j);
  26.  
  27. if (c[i] == 'º')  printf("%c", 'º');
  28.       if (c[i] == 'ª')  printf("%c", 'ª');
  29.       if (c[i] == '!')  printf("%c", '!');
  30. if (c[i] == '|')  printf("%c", '|');
  31. if (c[i] == '"')  printf("%c", '"');
  32. if (c[i] == '@')  printf("%c", '@');
  33. if (c[i] == '·')  printf("%c", '·');
  34. if (c[i] == '#')  printf("%c", '#');
  35. if (c[i] == '$')  printf("%c", '$');
  36. if (c[i] == '%')  printf("%c", '%');
  37. if (c[i] == '&')  printf("%c", '&');
  38. if (c[i] == '/')  printf("%c", '/');
  39. if (c[i] == '(')  printf("%c", '(');
  40. if (c[i] == ')')  printf("%c", ')');
  41. if (c[i] == '=')  printf("%c", '=');
  42. if (c[i] == '?')  printf("%c", '?');
  43. if (c[i] == '¿')  printf("%c", '¿');
  44. if (c[i] == '¡')  printf("%c", '¡');
  45. if (c[i] == '`')  printf("%c", '`');
  46. if (c[i] == '^')  printf("%c", '^');
  47. if (c[i] == '[')  printf("%c", '[');
  48. if (c[i] == '*')  printf("%c", '*');
  49. if (c[i] == '+')  printf("%c", '+');
  50. if (c[i] == ']')  printf("%c", ']');
  51. if (c[i] == '´')  printf("%c", '´');
  52. if (c[i] == '¨')  printf("%c", '¨');
  53. if (c[i] == '{')  printf("%c", '{');
  54. if (c[i] == 'ç')  printf("%c", 'ç');
  55. if (c[i] == 'Ç')  printf("%c", 'Ç');
  56. if (c[i] == '}')  printf("%c", '}');
  57. if (c[i] == '<')  printf("%c", '<');
  58. if (c[i] == '>')  printf("%c", '>');
  59. if (c[i] == ';')  printf("%c", ';');
  60. if (c[i] == ',')  printf("%c", ',');
  61. if (c[i] == '.')  printf("%c", '.');
  62. if (c[i] == ':')  printf("%c", ':');
  63. if (c[i] == '-')  printf("%c", '-');
  64. if (c[i] == '_')  printf("%c", '_');
  65. if (c[i] == ' ')  printf("%c", ' ');
  66.  
  67.     }
  68.   printf("\n\n");
  69.  
  70. system("pause");
  71.       return 0;  
  72. }

Un saludo.


Título: Re: Comparación individual de caracteres
Publicado por: Sagrini en 14 Marzo 2012, 17:32 pm
EL problema es que para comparar carácteres debes usar comillas simples. Te pongo un ejemplo:
Código
  1. if (car =='A') printf ("La letra seleccionada es A.\n");
Por cierto, no uses funciones *scan* cuando puedas evitarlo. Busca algo de fgetchar (), getchar (), fgetc (), etc...

MODF: Borro las dos primeras líneas ya que EI ya ha borrado los mensajes anteriores al mío y ya no tenían significado x
Un saludo. Sagrini


Título: Re: Comparación individual de caracteres
Publicado por: x64core en 14 Marzo 2012, 18:03 pm
Bueno el codigo tiene varios errores por ejemplo estos:
Código:
c=x; 
se hace:
Código:
c[elemento array]=x;

y estos:
Código:
c == j
así:
Código:
c[elemento] == j

y tambien una observacion viendo que haces esto:

Código:
      if (c == '"')  printf("%c", '"');
      if (c == '@')  printf("%c", '@');
      if (c == '·')  printf("%c", '·');
      if (c == '#')  printf("%c", '#');
      if (c == '$')  printf("%c", '$');
      if (c == '%')  printf("%c", '%');
      if (c == '&')  printf("%c", '&');
      if (c == '/')  printf("%c", '/');

la comparacion no es igual me refiero que los operandos no son del mismo tamaño
para ahorrar espacio y rapidez usa un array de tipo BYTE o un unsigned char :)


Título: Re: Comparación individual de caracteres
Publicado por: alpha015 en 14 Marzo 2012, 22:33 pm
Gracias por vuestras respuestas. Un saludo.