|
≫ |
|
|
|
HP OpenVMS HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)
指定されたコードセット変換のために変換記述子を割り当てます。
形式
#include <iconv.h>
iconv_t iconv_open (const char *tocode, const char *fromcode);
引数
tocode変換後の文字のコードセットの名前。
fromcode変換前のコードセットの名前。現在使用可能なコードセットの一覧と新しいコードセットの追加方法の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 10 章を参照してください。
戻り値
x
|
変換記述子。呼び出しが正常終了したことを示します。この記述子はこの後の
iconv
の呼び出しで使用されます。
|
(iconv_t)-1
|
エラーが発生したことを示します。
errno
は次のいずれかに設定されます。
- EMFILE---プロセスにファイルをオープンするための十分な I/O チャネルがありません。
- ENOMEM---使用できる領域が不足しています。
- EINVAL---
fromcode と
tocode によって指定される変換はサポートされません。
- EVMSERR---変換不可能な OpenVMS エラーが発生しました。
vaxc$errno
には OpenVMS エラー・コードが格納されます。
vaxc$errno
に SS$_BADCHKSUM という値が格納されている場合は,変換テーブル・ファイルは見つかったものの,テーブルの内容が壊れていることを示します。
vaxc$errno
に SS$_IDMISMATCH という値が格納されている場合は,変換テーブル・ファイルのバージョンが C ランタイム・ライブラリのバージョンと一致しないことを示します。
|
例
#include <stdio.h>
#include <iconv.h>
#include <errno.h>
int main()
{
/* Declare variables to be used */
char fromcodeset[30];
char tocodeset[30];
int iconv_opened;
iconv_t iconv_struct; /* Iconv descriptor */
/* Initialize variables */
sprintf(fromcodeset, "DECHANYU");
sprintf(tocodeset, "EUCTW");
iconv_opened = FALSE;
/* Attempt to create a conversion descriptor for the */
/* codesets specified. If the return value from */
/* iconv_open is -1 then an error has occurred. */
/* Check the value of errno. */
if ((iconv_struct = iconv_open(tocodeset, fromcodeset))
== (iconv_t) - 1) {
/* Check the value of errno */
switch (errno) {
case EMFILE:
case ENFILE:
printf("Too many iconv conversion files open\n");
break;
case ENOMEM:
printf("Not enough memory\n");
break;
case EINVAL:
printf("Unsupported conversion\n");
break;
default:
printf("Unexpected error from iconv_open\n");
break;
}
}
else
/* Successfully allocated a conversion descriptor */
iconv_opened = TRUE;
/* Was a conversion descriptor allocated */
if (iconv_opened) {
/* Attempt to deallocate the conversion descriptor. */
/* If iconv_close returns -1 then an error has */
/* occurred. */
if (iconv_close(iconv_struct) == -1) {
/* An error occurred. Check the value of errno */
switch (errno) {
case EBADF:
printf("Conversion descriptor is invalid\n");
break;
default:
printf("Unexpected error from iconv_close\n");
break;
}
}
}
return (EXIT_FAILURE);
}
|
|