2012年7月25日水曜日

開発環境

『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) II部(単純なプログラミング)の14章(ファイル入出力)14.4(行終端にまつわる謎)設問14-2を解いてみる。

設問14-2.

バイナリファイルを作成しなければならないのにASCIIファイルを作成しているため、MS_DOS?Windowsでは改行が改行、復帰に変更されて1倍と大きくなる。

修正(といっても出力結果はMacでの結果)

コード(TextWrangler)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef __MSDOS__
#include <unistd.h>
#endif /* __MSDOS__ */

int main(){
  int cur_char;
  FILE *out_file;
  
  /* wではなくwbに変更 */
  out_file = fopen("test.out","wb");
  if(out_file == NULL){
    fprintf(stderr,"Cannot open output file\n");
    exit(8);
  }
  
  for(cur_char = 0; cur_char < 128; ++cur_char){
    fputc(cur_char,out_file);
  }
  fclose(out_file);
  return(0);
}

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
$ cat test.out
 


!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$

0 コメント:

コメントを投稿