情報処理技術者試験対策講座
|
第2種情報処理技術者試験 | 平成7年春 | 午後 | 問7 |
16けた | 8けた | 4けた | 4けた | 4けた | 4けた | 16けた | 8けた | 30けた | |
名前 (1) | 関係 (2) | 暑中 (3) | 年賀 (4) | 中元 (5) | 歳暮 (6) | 電話番号 (7) | 郵便番号 (8) | 住所 (9) | \n |
1 17 25 29 33 37 41 57 65 |
山田太郎 恩師 暑中 年賀 中元 歳暮 03-3591-2222 105 東京都港区虎ノ門1-16-4 |
佐藤花子 友人 年賀 03-3436-3333 105 東京都港区浜松2-4-1 |
本田次郎 取引先 暑中 年賀 歳暮 06-646-4444 540 大阪府大阪市中央区大手町1-5-63 |
プログラム2#include <stdio.h> #include <string.h> #define MATCH 1 #define UNMATCH 0 #define KEY1 "年賀" typedef struct{ char name[16], relt[8], mode[4][4], tel[16], zip[8], addr[32]; } ADR; int mdchk(char*, ADR*); main() { FILE *fp; ADR rbuf; char obuf[33]; int count; count = 0; fp = fopen( "jusho.txt", "r") ; while (fgets( (char*)&rbuf , sizeof(ADR), fp )!= NULL ) { memset(obuf, ' ', sizeof(obuf)); obuf[sizeof(obuf)-1] = '\0'; if(mdchk(KEY1, &rbuf) == MATCH) { count++; strncpy(obuf , rbuf.name, sizeof(rbuf.name)); strncpy(obuf+16 , rbuf.tel , sizeof(rbuf.tel)); printf(" %s\n",obuf); } } fclose(fp); printf("\n*** 条件に合致した人数 = %d名\n", count); } int mdchk( char *str , ADR *jrec) { int id; for (id = 0; id < 4; id++) if (strncmp(jrec->mode[id], str, sizeof(jrec->mode[id])) == 0) return MATCH ; return UNMATCH ; }
#include <stdio.h> #include <string.h> typedef struct{ char name[16], relt[8], mode[4][4], tel[16], zip[8], addr[32]; } ADR; #define SIZ 70 …………………… -! main() { FILE *fp; ADR rbuf; char obuf[3][SIZ]; int wi, eid, wide; fp = fopen("jusho.txt" , "r") ; wide = sizeof(rbuf.addr); while (1) { for (wi = 0; wi < 3; wi++) { memset( &obuf[wi], ' ', SIZ); obuf[wi][SIZ-1] = '\0'; } for (eid = 0 ;eid < SIZ / wide; eid++) { if (fgets((char*)&rbuf, sizeof(ADR), fp) == NULL) { fclose(fp); return; } strncpy(obuf[0] + eid * wide, rbuf.zip , sizeof(rbuf.zip)); strncpy(obuf[1] + eid * wide, rbuf.addr , sizeof(rbuf.addr)-2); strncpy(obuf[2] + eid * wide, rbuf.name , sizeof(rbuf.name)); strncpy(obuf[2] + eid * wide + sizeof(rbuf.name), "様", 2); } printf("\n\n\n"); /* 空行の出力 */ for (wi = 0; wi < 3; wi++) printf("%s\n",obuf[wi]); } }
解答 |
解説 |
a |
b |
c |
d |