提示方法は自由。ただし簡単なテスト実行を必須とします。400P進呈!!(複数人開けた場合は当方の判断で山分け)19日朝6時まで受付。
<問題>次の構造体を1レコードとするファイルを作成。ファイル名は「shokuin.dat」1人分のデータを画面から受け取る関数プロトタイプはint get_shokuin(shokuin *sp)とする。ファイルへのデータの書き込みはfwrite関数を使用。その他は自由。
<構造体(shokuin)>
職員番号:4桁
氏名(漢字):20桁
氏名(カナ):20桁
郵便番号:6桁
住所:60桁
電話番号:12桁
ソースはこちら
http://d.hatena.ne.jp/keronimo/20070918
使用の不明な点が多々ありましたが、そこは適当に解釈しました。
#include <stdio.h> #include <string.h> struct shokuin { int shokuin_no; // ★ 数値型にしたい? char name_kanji[40]; char name_kana[20] ; char yubin[7] ; // ★ '\0' 分のサイズが不足 char jyusyo[60] ; char tel[13] ; // ★ '\0' 分のサイズが不足 }; void get_shokuin( struct shokuin *sp ); // 構造体の型が不足 void main ( void ) { struct shokuin a[4] = // ★ a[] は不適なので サイズを4人分に変更:拡張性はよくない { { 1122, "池野", "イケノ", "111-00", "tokyo", "03-0123-0123" }, { 3344, "武田", "タケダ", "176-00", "yokohama", "090-012-9876" }, { 0, "", "", "", "", "" } }; struct shokuin *sp; //構造体へのポインタspの宣言 get_shokuin( &(a[2]) ); //1人分のデータを画面から受け取る関数 //最終レコードの作成 // ★ 関数でやるべき処理ではないので main へ移動 a[3].shokuin_no = 0; // ★ while から for 文に変更 for( sp = a ; sp->shokuin_no != 0 ; sp++ ) //最終レコードの判断 { //全員の表示 printf("%d %s %s %s %s %s\n", // ★ 改行の追加 sp->shokuin_no, sp->name_kanji, sp->name_kana, sp->yubin, sp->jyusyo, sp->tel ); } } void get_shokuin( struct shokuin *sp ) //1人分のデータを画面から受け取る { printf( "1人分の情報を入力して下さい。\n" ); printf( "職員番号の入力" ); scanf ( "%d", &(sp->shokuin_no) ); // ★ アドレスに変更 printf( "氏名(漢字)の入力" ); scanf ( "%s", sp->name_kanji ); printf( "氏名(カナ)の入力" ); scanf ( "%s", sp->name_kana ); printf( "郵便番号の入力" ); scanf ( "%s", sp->yubin ); printf( "住所の入力" ); scanf ( "%s", sp->jyusyo ); printf( "電話番号の入力" ); scanf ( "%s", sp->tel ); }
何が禁止なのか文章で書け。
著作権?