Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Negro2901

Páginas: [1]
1
Hola bs ts. Como recien me estoy iniciando en programacion, estoy intentano construir un programa que muestre datos en formato hex, luego que con una funcion me permita elegir un parametro a buscar y finalmente lo ordene como primer elemento de la una cadena, segun el parametro encontrado.

Con el codigo adjunto llegue hasta desplegar los datos en formato hex....pero no logro armar una sintaxis para crear las funciones que permitan realizar el resto de las consignas.

Desde ya muchas grs...por ayudarme u orientarme..



Código: [Seleccionar]
/*
/*Programa que despliega cualquier archivo binario o de txt. Para esto la fun "main"
tiene dos argumentos. Con esta función se puede introducir argumentos al ejecutar
el programa.

El primer argumento de main es "argc", es el nro de cadenas que contiene la linea
de comandos. las cadenas se almacenan en el segundo argu (argv)

El segundo argumento de main es "argv", es un array.

Si el nro de argumentos es menor que 2, el programa termina informando la forma
de utilizarlo.

Con este programa, se puede explorar caulquier tipo de archivo.
*/

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>

void muestra (char *nom);
int main(char argc,char **argv)
{
   if (argc<2)
    {
        printf("uso: ver archivo\n");
        getch();
        exit(1);
    }
    else
    {
        muestra(argv[1]);
    }
}

/* La func "muestra" lee y despliega el archivo. Los archivos son desplegados
en reglones de 16 bytes en formato hexadecimal y en su equivalente ASCII.
*/

void muestra(char *nom)
{
    FILE *f; /*Creamos un puntero FILE a f*/
    unsigned char ch; /*Declar variable ch, tipo caracter y sin signo*/
    char a [16] = {0}; /*Definimos un vector a, tipo char con 16 elementos y lo   inicializamos en 0*/
    int fil=0, col=0, k; /*declaramos e inici var fil, col en 0 y sin inicializar var k para  control de inicio de los FOR*/
    f = fopen(nom, "r"); /*Abrimos fichero en modo lectura y lo cargamos en var f*/
   
if (f==NULL) /*Este if es para verificar si se puede abrir bien el fichero.*/
    {
        printf("NO existe el archivo: %s", nom);
        getch();
        exit(1);
    }
    else /*Si todo esta ok continamos*/
    {
        ch= fgetc(f); /*cargamos en puntero ch, caracter por caracter los datos del file que estan almacenados en f*/
       
        while (!feof(f)) /*Mientras el caracter no sea FIN DE LINEA, hacemos*/
        {
            printf("%02x ",ch); /*Desplegamos en formato hex con dos bytes de formato, los caracteres que estan en ch */
            a[col]= ch; /*en el vector a, vamos controlando la entrada de los datos que estan en ch y que van ingresando en la col "que arman la columna"*/
            col++; /*vamos incrementando columna*/
           
            if (col==16) /*Condicion, cuando col llegue a 16 muestras*/
            {
                fil++; /*Con el bucle, comenzamos a incrementar filas*/
                for (k=0;k<16;k++) /*Hacemos recorrer el bucle con la var de control k desde 0 a 15 veces*/
                    if (isprint(a[k])) /* SI La func "isprint" encuentra que un elemento del vector a es ASCII
IMPRIME el caracter almacenado en ese lugar*/
                    printf("%c",a[k]);
                    else /*SINO, IMPRIME un puntito*/
                        printf(".");
                    col= 0; /*Ponemos valor 0 la var col*/
                    printf("\n"); /*le damos un fin linea*/
                   
            }
           
            if (fil==10) /*SI cuando fil llegue a 10*/
            {
                printf("Presione cualquier tecla..."); /*Le decimos al user que apriete cualquier tecla para
continuar*/
                getch();
                printf("\n"); /*le damos un fin de linea*/
                fil = 0; /* ponemos var fil en 0*/
             }
             
             ch = fgetc(f); /*OTRA vez cargamos en puntero ch, caracter por caracter los datos del file que estan almacenados en f*/
        }
    }
   
    fil= col; /*lo que esta en var col lo pasamos a var fil o sea 16*/
   
    while (fil<16) /*MIENTRAS var fil sea menor que 16..*/
    {
        printf("   "); /*imprimos espacios en blanco e incrementamos col*/
        col++;
    }
    for (k=0;k<1;k++)
        if (isprint(a[k]))
        printf("%c", a[k]);
        else
            printf(".");
        printf("\nPresione cualquier tecla...");
        getch();
}


2
Hola bs ds. Estoy intentando crear un programa que abra un archivo.txt en formato hex. Luego me permita buscar un dato x y a partir de este parametro ordenarlo al comienzo de linea.

Llegué hasta abrir un archivo y recorrerlo mostrando en formato hex, pero luego estoy muy trabado en alguna funcion de buscar y ordenarlo.

EL codigo es el siguiente:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>

void muestra (char *nom);

int main(char argc,char **argv)
{
   if (argc<2)
    {
        printf("uso: ver archivo\n");
        getch();
        exit(1);
    }
    else
    {
        muestra(argv[1]);
    }
}

/* La func "muestra" lee y despliega el archivo. Los archivos son desplegados
en reglones de 16 bytes en formato hexadecimal y en su equivalente ASCII.
*/

void muestra(char *nom)
{
    FILE *f;
    unsigned char ch;
    char a [16] = {0};
    int i=0, j=0, k;
    f = fopen(nom, "r");
    if (f==NULL)
    {
        printf("NO existe el archivo: %s", nom);
        getch();
        exit(1);
    }
    else
    {
        ch= fgetc(f);
        while (!feof(f))
        {
            printf("%02x ",ch); /*Esta sentencia despliega en formato hexa. El 0
  se utiliza para rellenar el campo de 0Žs en lugar
  de usar espacios */
            a[i]= ch;
            i++;
            if (i==16)
            {
                j++;
                for (k=0;k<16;k++)
                    if (isprint(a[k])) /*La func "isprint" se utiliza para desplegar
solo caracteres imprimibles ASCII*/
                    printf("%c",a[k]);
                    else
                        printf(".");
                    i= 0;
                    printf("\n");
            }
            if (j==24)
            {
                printf("Presione cualquier tecla...");
                getch();
                printf("\n");
                j = 0;
             }
             ch = fgetc(f);
        }
    }
    j= i;
    while (j<16)
    {
        printf("   ");
        j++;
    }
    for (k=0;k<1;k++)
        if (isprint(a[k]))
        printf("%c", a[k]);
        else
            printf(".");
        printf("\nPresione cualquier tecla...");
        getch();
}

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".