The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"iconv(3) ?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"iconv(3) ?"
Сообщение от DmitryvMuha emailИскать по авторуВ закладки on 10-Сен-03, 09:20  (MSK)
вобщем хочу функцию которая бы перекодировала, из кои8 в юникод.
Написал ее с использованием iconv
вот код:
#include <iconv.h>
char* ConvertString( char source[])
{
unsigned int ilen, olen;
char *ibuf, *obuf;
char buf [25];
iconv_t iopen;
iopen = iconv_open ( "UTF-8", "KOI8-R");
olen =ilen=strlen(source)+1;
obuf = (char *)&buf;
ibuf = (char *)source;
strcpy ( buf, source );
if ( iopen != (iconv_t)(-1) )
iconv ( iopen, &ibuf, &ilen, &obuf, &olen );
strcpy ( source, buf );
iopen = iconv_close;
return ( source );
}
main(void)
{
printf (ConvertString("привет")); //слово привет в koi8

}

при компиляцмм сказал следующее:
"i.c:20:warning:passing arg 2 of 'iconv'from incompatible pointer type"

но откомпилял

после запуска грит следуещее
"Segmentation fault"

Не ругайте в линухе и в си я не АС, подскажите где косяк?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

  • iconv(3) ?, Алексей, 10:33 , 10-Сен-03, (1)
    • iconv(3) ?, DmitryvMuha, 12:08 , 10-Сен-03, (2)
      • iconv(3) ?, Алексей, 12:21 , 10-Сен-03, (3)
      • iconv(3) ?, Алексей, 12:24 , 10-Сен-03, (4)
        • iconv(3) ?, DmitryvMuha, 12:43 , 10-Сен-03, (5)

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "iconv(3) ?"
Сообщение от Алексей emailИскать по авторуВ закладки on 10-Сен-03, 10:33  (MSK)

>unsigned int ilen, olen;
>char *ibuf, *obuf;
>char buf [25];

>obuf = (char *)&buf;
А помоему грабли здесь.
надо
obuf = (char*)buf;
а если как ты написал то
obuf = (char*)&buf[0];

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "iconv(3) ?"
Сообщение от DmitryvMuha emailИскать по авторуВ закладки on 10-Сен-03, 12:08  (MSK)
>>obuf = (char *)&buf;
>А помоему грабли здесь.
>надо
>obuf = (char*)buf;
>а если как ты написал то
>obuf = (char*)&buf[0];

попробывал итак и так не работат, тоже самое пишет

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "iconv(3) ?"
Сообщение от Алексей emailИскать по авторуВ закладки on 10-Сен-03, 12:21  (MSK)
>попробывал итак и так не работат, тоже самое пишет
в смысле Segmentation Fault или про поинтеры?
С поинтерами там все понятно.
я думаю, что
iconv ( iopen,(char*)&ibuf,(size_t*)&ilen,(char*)&obuf,(size_t*)&olen );
решит проблему warning-a
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "iconv(3) ?"
Сообщение от Алексей emailИскать по авторуВ закладки on 10-Сен-03, 12:24  (MSK)
>попробывал итак и так не работат, тоже самое пишет
Ан нет!
Всему виной вот это.
conv ( iopen, &ibuf, &ilen, &obuf, &olen );
strcpy ( source, buf );
Дело в том, что вызов ты делаешь так:
printf (ConvertString("привет")); //слово привет в koi8
Соотвествено, если мне не отшибает память, такая
строка попадат в данные, которые нельзя перезаписывать.
и если ты вызовешь, скажем так
printf (ConvertString(strdup("привет")));
то скорее всего все будет хорошо.....

Кажется...


  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "iconv(3) ?"
Сообщение от DmitryvMuha emailИскать по авторуВ закладки on 10-Сен-03, 12:43  (MSK)
спасиба огромное все работает

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру