File IO

Kibicho Murage
1 min readNov 21, 2021

Open file, turn to binary and print

#include <stdio.h>
#include <stdlib.h>
void AddBinary(int number, int *array, int startIndex)
{
for(int i = startIndex; i < startIndex + 8; i++)
{
if(number % 2 == 0)
{
array[i] = 0;
}
else
{
array[i] = 1;
}
number /= 2;
}
}
int *OpenFile(char *fileName, int *fileLength)
{
FILE *fp = fopen(fileName, "rb");
if(fp == NULL)
{
return NULL;
}
fseek(fp, 0L, SEEK_END);
*fileLength = ftell(fp) * 8;
rewind(fp);
int c = 0;
int index = 0;
int *file = malloc(*fileLength * sizeof(int));
while((c = fgetc(fp)) != EOF)
{
AddBinary(c, file, index * 8);
index++;
}
fclose(fp);
return file;
}
void PrintFileBinary(int *file, int fileLength)
{
for(int i = 0; i < fileLength; i++)
{
if(i > 0 && i %8 == 0)
{
putchar('\n');
}
printf("%d", file[i]);
}
}
int main()
{
int fileLength = 0;
char *fileName = "main.c";
int *file = OpenFile(fileName,&fileLength);
if(file == NULL)
{
printf("%s does not exist\n",fileName);
return 0;
}
PrintFileBinary(file, fileLength);
free(file);
return 0;
}

--

--

Kibicho Murage
0 Followers

AI Researcher at Fileforma. Twitter : murage_kibicho