Skip to content

Instantly share code, notes, and snippets.

@MacoChave
Last active October 4, 2018 19:15
Show Gist options
  • Save MacoChave/15192f47aa4349c99922588f5f3e0e14 to your computer and use it in GitHub Desktop.
Save MacoChave/15192f47aa4349c99922588f5f3e0e14 to your computer and use it in GitHub Desktop.
CREAR - LEER - ACTUALIZAR - ELIMINAR ARCHIVOS BINARIOS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void readFile (char * filename)
{
FILE * file;
/*
ABRIR FILE * EN MODO LECTURA [r]
NULL SI NO EXISTE EL FICHERO
*/
if ((file = fopen(filename, "r")) == NULL)
{
printf("Archivo no encontrado\n");
return;
}
/*
CICLO HASTA EL FIN DEL TEXTO [feof]
fgets (DESTINO, TAMAÑO, FILE *)
memset (STRING, CARACTER VACÍO, TAMAÑO)
LIMPIAR BUFFERING DE FILE * (fflush)
*/
while (!feof(file))
{
char buffer[250];
fgets(buffer, 250, file);
printf ("%s\n", buffer);
memset(buffer, '\0', 250);
fflush(file);
}
/*
CERRAR EL FICHERO (fclose)
*/
fclose(file);
}
void writeFile (char * filename, char * text)
{
FILE * file;
if ((file = fopen(filename, "a+")) == NULL)
{
printf("Archivo no reconocido\n");
return;
}
/*
AGREGAR UN STRING
fputs (SOURCE, FILE *)
AGREGAR UN CARACTER
fputc (SOURCE, FILE *)
*/
fputs(text, file);
fputc('\n', file);
fclose(file);
}
int main ()
{
writeFile("filename.txt", "HOLA");
writeFile("filename.txt", "MUNDO");
writeFile("filename.txt", "TEXTO");
writeFile("filename.txt", "ESCRITO");
readFile("filename.txt");
return 0;
}
#ifndef MANAGER_H_INCLUDED
#define MANAGER_H_INCLUDED
#include <stdio.h>
#include "../struct/sdisk.h"
/* OBTENER EL PATH DEL ARCHIVO DE 'filename' */
char * getDirectoryPath(char * filename)
{
char * cpyPath = (char *)malloc(strlen(filename));
strcpy(cpyPath, filename);
char * temp = (char *)malloc(strlen(filename));
memset(temp, 0, strlen(filename));
char * fileDirectory = (char *)malloc(strlen(filename));
memset(fileDirectory, 0, strlen(fileDirectory));
strcpy(fileDirectory, "/");
temp = strtok(cpyPath, "/");
while (*temp)
{
strcat(fileDirectory, temp);
strcat(fileDirectory, "/");
temp = strtok(NULL, "/");
// .png | .jpg | .jpeg | .disk | .dsk
if (temp != NULL &&
((temp[strlen(temp) - 4] == '.') ||
(temp[strlen(temp) - 5] == '.')))
break;
}
return fileDirectory;
}
/* CREAR FOLDER CON SUBCARPETAS NECESARIAS DE 'filename' */
int createFolder(char * filename)
{
char * fileDirectory = getDirectoryPath(filename);
size_t size = strlen(fileDirectory) + sizeof(char) * 10;
char * cmd = (char *)malloc(size);
memset(cmd, 0, size);
strcpy(cmd, "mkdir -p ");
strcat(cmd, fileDirectory);
return (system(cmd) == 0) ? 1 : 0;
}
/* CREAR ARCHIVO BINARIO 'filename' CON EL TAMAÑO 'size' */
int createDisk(char * filename, int size)
{
FILE * file;
if ((file = fopen(filename, "wb")) == NULL)
{
perror("createDisk\n");
return 0;
}
char buffer[KILOBYTE];
memset(buffer, '\0', KILOBYTE);
for(int i = 0; i < size / KILOBYTE; i++)
{
fwrite(buffer, sizeof(buffer), 1, file);
fflush(file);
}
fclose(file);
return 1;
}
/* VERIFICAR ARCHIVO BINARIO 'filename' */
int checkDisk(char * filename)
{
FILE * file;
if ((file = fopen(filename, "rb")) == NULL)
return 0;
fclose(file);
return 1;
}
/* ACTUALIZAR ARCHIVO BINARIO 'filename' CON LA DATA 'data' */
int updateMBR(char * filename, MBR * data)
{
FILE * file;
if ((file = fopen(filename, "rb+")) == NULL)
{
perror("updateMBR\n");
return 0;
}
fwrite(data, sizeof(MBR), 1, file);
fclose(file);
return 1;
}
/* ELIMINAR ARCHIVO BINARIO 'filename' */
int deleteDisk(char * filename)
{
return (remove(filename) == 0) ? 1 : 0;
}
#endif // MANAGER_H_INCLUDED
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment