0

出力ファイルに書き込もうとすると、バス エラーが発生し続けます。私のバイナリ関数は、入力ファイルからの受信テキストをバイナリに変換し、出力ファイルに入れます。しかし、実行するとこのバスエラーが発生し続け、理由がわかりません!

#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);
}
4

0 に答える 0