• Martes 12 de Noviembre de 2024, 21:22

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.


Temas - luchot

Páginas: [1]
1
C/C++ / Archivo Binario Como Secuencial? :s
« en: Jueves 16 de Junio de 2005, 17:20 »
Buenos dias,

Tengo una duda con respecto a este tema, resulta que creo un fichero en modo binario y luego le agrego una linea, pero luego de crearlo puedo ver su contenido con el comando "cat" desde un shell cualquiera (trabajo sobre linux). Alquien tiene idea de porqué pasa esto?

Aquí está el codigo que estoy utilizando:

Citar
void crearArchivos(){
     FILE *fichero;
         
     fichero  = fopen("file.dat","r+b");
     
     // SI EL FICHERO NO EXISTE LO CREA
     if(!fichero) {
        fichero = fopen("file.dat","wb");
        fseek(fichero, 0, SEEK_END);
        // ESCRIBO CADENA DIRECTA " "
        fwrite("cualquier\n", sizeof(char [10]), 1, fichero);

        // ESCRIBO VARIABLE TIPO CHAR
        char cadena[10]="132456789\n";
        fwrite(&cadena, sizeof(char [10]), 1, fichero);
     }
     
     // CIERRA EL FICHERO
     fclose(fichero);
}

Luego de salir del programa ejecuto el comando "cat" y esta es la salida:

Citar
[root@server practica]# cat file.dat
cualquier
132456789

Por lo que el archivo no presenta ninguna diferencia con un archivo secuencial común....Alguna sugerencia?

Muchas gracias a todos;

Luchot

2
C/C++ / Validación De Ip Ingresada Por Usuario
« en: Martes 14 de Junio de 2005, 18:01 »
hola  a todos,

Estoy haciendo un programa en C que debe manejar nros de IP para luego gestionar un firewall con el modulo net_filter del kernel de Linux. Dado que necesito que el mismo sea performante, debo de hacerlo en c para gestionar el uso de memoria y tal.

El problema que tengo es sinceramente muy básico, pero no logro descifrar donde esta el problema....una de las validaciones que debo hacer es la siguiente:

Formato IP válido: n1.n2.n3.n4

Ejemplos: 192.168.0.101, 255.255.255.0, 66.98.151.220, 0.0.0.0, etc


Donde "n1, n2, n3, n4" deben ser menor  o igual a 255 (n<=255)

El problema es que el Nro de IP se ingresa por teclado lo almaceno en un array de tipo char, en este caso nuevaIP[15] (16 espacios: 12 para posibles nros, 3 caracteres punto "." y el final de cadena '\n')

He hecho un bucle for donde pregunto por el caracter "." sino lo encuentro debo de almacenar en una variable el primer nro, y asi consecutivamente.

Un ejemplo suponiendo que la cadena ingresada sea "192.98.151.220"

Citar
i=0;
char aux;
char trio[3];
while (nuevaIP != '\n') {
       charter = ("%c", nuevaIP);
       aux= ("%c", nuevaIP);
        if (charter != 46) {
       // aux se carga con "1", "9", y "2" antes de encontrar un punto en la cadena
         aux = ("%c", aux);
                // esto me da error, y si uso "atoi" tambien y sino me carga el ascii :(
   trio = aux;
        }else{
                 //se encontro un punto, trio debe de contener "192"

                //se encontro un punto debo inicializar trio[] a cero,  para
                // seguir evaluando el segundo grupo de nros.      
        }
        i++;
}
En resumen, necesito cargar una variable int ubicada entre los caracteres "." de la cadena, para luego verificar que la misma sea menor a 255.

Alguna idea para solucionar este tema? Desde ya muchas gracias por su interes,

Mis saludos;

luchot-

Páginas: [1]