Код
/*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)
, чтобы получить сообщение об ошибке, которое говорит: «Список аргументов слишком длинный».
Как я могу решить эту проблему? Благодаря комментариям я изменяю приведенный выше код.
Я просто использую функцию для чтения текстового файла. Я думаю, что он сообщает об ошибке, потому что файл слишком большой. Итак, я хочу знать, как использовать iconv для длинной строки .