I keep recieving a bus error when trying to write to my output file. my binary function converts incoming text, from the input file, to binary and puts it in the output file. But I keep getting this bus error when I run, and I do not know why!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#define MAXLEN 255
#define FLAG 1
#define INPUT 2
#define OUTPUT 3
int binary(unsigned char x){ //, int argc, char* argv[]){
FILE* out;
unsigned char i, n = (sizeof(x) * CHAR_BIT) -1;
int t;
for(i=0; i<= n; i++){
fprintf(out, "%d",(x >> (n-i) & 1));
}
fprintf(out, " \n");
}
int main(int argc, char *argv[]){
FILE *in, *out;
char instring[MAXLEN];
const char *p;
in = fopen(argv[INPUT], "r");
if(in == NULL){
printf("Error: This File is Empty.\n");
exit(1);
}else{
out = fopen(argv[OUTPUT], "w");
if(strcmp(argv[FLAG], "-b") == 0){
fgets(instring, MAXLEN, in);
for(p = instring; *p != '\0'; p++){
// fprintf(out, "%d", binary(*p));
binary(*p);
}
}
else
if(strcmp(argv[FLAG], "-t") == 0){
}
else{
printf("Error: Flag Not Recognized.\n");
return 0;
}
}
fclose(in);
fclose(out);
}