平成16年 秋期 基本情報技術者 午後 問06
問06 C言語次の C プログラムの説明及びプログラムを読んで,設問に答えよ。
〔プログラムの説明〕 CGI などへのリクエストの際に文字列パラメタを URL に含める場合には, その文字列パラメタを決められた規則に従って変換し送出する必要がある。 このプログラムは,それに用いる変換プログラム URLEncode である。 (1) 変換対象の文字列パラメタは,JIS X 0201( 7 ビット及び 8 ビットの情報交換用符号化文字集合) の文字で構成される。 また,文字列パラメタの途中にナル文字(文字符号 0x00)は含まれないものとする。 (2) 変換規則は次のとおりである。 @ 英数文字(0x30 〜 0x39,0x41 〜 0x5A,0x61 〜 0x7A)及び“@”(0x40),“*”(0x2A), “-”(0x2D),“.”(0x2E),“_”(0x5F)は変換しない(これらの文字を以降,無変換文字と呼ぶ)。 A @ に含まれない文字は,“%”の後に文字符号の2けたの 16 進表記を続けた 3 (3) 関数 URLEncode の仕様は,次のとおりである。 形式: void URLEncode( unsigned char *input, unsigned char *output ) 引数: input 変換前の文字列が格納されている文字型配列へのポインタ output 変換後の文字列を格納する文字型配列へのポインタ (4) output が指す配列は,変換後の文字列を格納するのに十分な領域が確保されているものとする。
(5) 例えば,“Hi!”という文字列パラメタを変換した結果は図のとおりとなる。
図 文字列パラメタの変換例 (6) 次の関数があらかじめ用意されている。 形式: int replaceChar( unsigned char c ) 引数: c 返却値:文字 c が無変換文字の場合は 0 を,それ以外の場合は 1 を返す。
〔プログラム〕 int replaceChar( unsigned char ); void URLEncode( unsigned char *input, unsigned char *output ) { const unsigned char chars[] = "0123456789ABCDEF"; while( *input != '\0' ) { if ( replaceChar( ) ) { *output++ = '%'; *output++ = chars[ ]; *output++ = chars[ ]; } else { *output++ = *input; } ; } *output = '\0'; }
設問 プログラム中の に入れる正しい答えを, 解答群の中から選べ。
a,d に関する解答群 ア &input イ (&input)++ ウ (*input)++ エ **input オ **input++ カ *input キ input ク input++ b,c に関する解答群 ア *input << 4 イ *input >> 4 ウ *input & 0x0F エ *input & 0xF0 オ *input ^ 0x0F カ *input ^ 0xF0 キ *input | 0x0F ク *input | 0xF0
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
|