2012年11月2日金曜日

開発環境

『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) II部(単純なプログラミング)の14章(ファイルの入出力)14.10(プログラミング実習/O)実習14-6を解いてみる。

実習14-6.

コード(TextWrangler)

sample.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
  struct mailing{
    char name[60];
    char address1[60];
    char address2[60];
    char city[40];
    char state[2];
    long int zip;
  };
  char line[100];
  FILE *out_file;
  struct mailing mail;
  out_file = fopen("mailing.txt", "w");
  if(out_file == NULL){
    fprintf(stderr, "Cannot open %s\n", "mailing.txt");
    exit(8);
  }
  printf("name: ");
  fgets(line, sizeof(line), stdin);
  line[strlen(line) - 1] = '\0';
  strcpy(mail.name, line);
  printf("address1: ");
  fgets(line, sizeof(line), stdin);
  line[strlen(line) - 1] = '\0';
  strcpy(mail.address1, line);
  printf("address2: ");
  fgets(line, sizeof(line), stdin);
  line[strlen(line) - 1] = '\0';
  strcpy(mail.address2, line);
  printf("city: ");
  fgets(line, sizeof(line), stdin);
  line[strlen(line) - 1] = '\0';
  strcpy(mail.city, line);
  printf("state: ");
  fgets(line, sizeof(line), stdin);
  line[strlen(line) - 1] = '\0';
  strcpy(mail.state, line);
  printf("zip: ");
  fgets(line, sizeof(line), stdin);
  sscanf(line, "%ld", &mail.zip);
  fprintf(out_file, 
    "name: %s\naddress1: %s\naddress2: %s\ncity: %s\nstate: %s\nzip: %ld\n",
    mail.name, mail.address1, mail.address2, mail.city, mail.state, mail.zip);
  fclose(out_file);
  return (0);
}

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
name: kamimura
address1: abcde
address2: fghij
city: klmno
state: pq
zip: 12345
$ cat mailing.txt
name: kamimura
address1: abcde
address2: fghij
city: klmno
state: pq
zip: 12345
$

こういう感じでいいのかな。。

0 コメント:

コメントを投稿