Comparación individual de caracteres

Iniciado por alpha015, 13 Marzo 2012, 23:04 PM

0 Miembros y 1 Visitante están viendo este tema.

alpha015


#include<stdio.h>
#include<stdlib.h>
int c[61],i,j,x;
FILE *pass;

main()
{
pass=fopen("password.txt", "r");

for (i=1; i<=60; i++)
{
fscanf(pass, "%c", &x);
c[i]=x;
}

for (i=1; i<=60; i++)
{
      for (j=48; j<=57; j++)
      if (c[i] == j)  printf("%c", j);

      for (j='a'; j<='z'; j++)
      if (c[i] == j)  printf("%c", j);

      for (j='A'; j<='Z'; j++)
      if (c[i] == j)  printf("%c", j);

if (c[i] == 'º')  printf("%c", 'º');
      if (c[i] == 'ª')  printf("%c", 'ª');
      if (c[i] == '!')  printf("%c", '!');
if (c[i] == '|')  printf("%c", '|');
if (c[i] == '"')  printf("%c", '"');
if (c[i] == '@')  printf("%c", '@');
if (c[i] == '·')  printf("%c", '·');
if (c[i] == '#')  printf("%c", '#');
if (c[i] == '$')  printf("%c", '$');
if (c[i] == '%')  printf("%c", '%');
if (c[i] == '&')  printf("%c", '&');
if (c[i] == '/')  printf("%c", '/');
if (c[i] == '(')  printf("%c", '(');
if (c[i] == ')')  printf("%c", ')');
if (c[i] == '=')  printf("%c", '=');
if (c[i] == '?')  printf("%c", '?');
if (c[i] == '¿')  printf("%c", '¿');
if (c[i] == '¡')  printf("%c", '¡');
if (c[i] == '`')  printf("%c", '`');
if (c[i] == '^')  printf("%c", '^');
if (c[i] == '[')  printf("%c", '[');
if (c[i] == '*')  printf("%c", '*');
if (c[i] == '+')  printf("%c", '+');
if (c[i] == ']')  printf("%c", ']');
if (c[i] == '´')  printf("%c", '´');
if (c[i] == '¨')  printf("%c", '¨');
if (c[i] == '{')  printf("%c", '{');
if (c[i] == 'ç')  printf("%c", 'ç');
if (c[i] == 'Ç')  printf("%c", 'Ç');
if (c[i] == '}')  printf("%c", '}');
if (c[i] == '<')  printf("%c", '<');
if (c[i] == '>')  printf("%c", '>');
if (c[i] == ';')  printf("%c", ';');
if (c[i] == ',')  printf("%c", ',');
if (c[i] == '.')  printf("%c", '.');
if (c[i] == ':')  printf("%c", ':');
if (c[i] == '-')  printf("%c", '-');
if (c[i] == '_')  printf("%c", '_');
if (c[i] == ' ')  printf("%c", ' ');

    }
  printf("\n\n");

system("pause");
      return 0;  
}


Un saludo.

Sagrini

#1
EL problema es que para comparar carácteres debes usar comillas simples. Te pongo un ejemplo:
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

x64core

Bueno el codigo tiene varios errores por ejemplo estos:
c=x;
se hace:
c[elemento array]=x;

y estos:
c == j
así:
c[elemento] == j

y tambien una observacion viendo que haces esto:

      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 :)

alpha015

Gracias por vuestras respuestas. Un saludo.