0

コード

/*char* to wchar_t* */
wchar_t*strtowstr(char*str){
    iconv_t cd=iconv_open("wchar_t","UTF-8");
    if(cd==(iconv_t)-1){
        return NULL;
    }
    size_t len1=strlen(str),len2=1024;
    wchar_t*wstr=(wchar_t*)malloc((len1+1)*sizeof(wchar_t));
    char*ptr1=str;
    wchar_t*ptr2=wstr;
    if((int)iconv(cd,&ptr1,&len1,(char**)&ptr2,&len2)<0){
        free(wstr);
        iconv_close(cd);
        return NULL;
    }
    *ptr2=L'\0';
    iconv_close(cd);
    return wstr;
}

strerror(errno)「Arg list too long」というエラー メッセージが表示されます。
どうすれば解決できますか?コメントのおかげで、上記のコードを変更します。
関数を使用してテキストファイルを読み取るだけです。ファイルが大きすぎるためにエラーが報告されると思います。長い文字列にiconvを使用する方法を知りたいです。

4

1 に答える 1