Войти

Показать полную графическую версию : помогите откомпилировать либо найти рабочий код! (алгоритм LZW)


stas_newar
10-11-2009, 23:06
Доброго времени суток!
нужен код для кодирования и декодирования алгоритмом LZW именно на языке Си.
нашел страничку на которой все описано и есть реализация на Си, но я не могу этот код откомпилировать. компилирую на Ubuntu 9.

http://algolist.manual.ru/compress/standard/lzw.php

ребята, помогите пожалуйста, очень нужно и времени в обрез!!!

lxa85
11-11-2009, 01:54
но я не могу этот код откомпилировать »
Какие ошибки выдает компилятор?
компилирую на Ubuntu 9. »
Как именно? Какая среда разработки, какой компилятор? (какие пакеты ставились для разработки ПО?)
Запрос к Google, и просмотр первой страницы с ссылками, должен снять все вопросы по нахождению готового алгоритма.
Метод LZW-сжатия данных (http://www.google.com/search?client=opera&rls=ru&q=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4+LZW-%D1%81%D0%B6%D0%B0%D1%82%D0%B8%D1%8F+%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&sourceid=opera&ie=utf-8&oe=utf-8)

Admiral
11-11-2009, 02:42
stas_newar, во первых пропущена закрывающая скобка "}" функции output_code () в конце исходника, что сразу бросается в глаза при копировании.
После добавления, с предупреждениями lzw.c(153) : warning C4716: 'compress' : must return a value
lzw.c(244) : warning C4716: 'expand' : must return a value
lzw.c(302) : warning C4716: 'output_code' : must return a value собирается компилятором от Микрософт.
Во вторых, на algolist.manual.ru сказано, что данный исходник предназначен для компиляторов С под MS-DOS, так что скажем в gcc в Ubuntu сборка не гарантируется.

stas_newar
11-11-2009, 14:35
lxa85,
вот, что выдает компилятор

stas@stas-laptop:~$ gcc lzw.c
lzw.c: В функции ‘main’:
lzw.c:54: предупреждение: несовместимая неявная декларация внутренней функции ‘exit’
lzw.c:54: ошибка: слишком мало аргументов в вызове функции ‘exit’
lzw.c:61: предупреждение: несовместимая неявная декларация внутренней функции ‘strcpy’
lzw.c:72: предупреждение: несовместимая неявная декларация внутренней функции ‘exit’
lzw.c:72: ошибка: слишком мало аргументов в вызове функции ‘exit’
lzw.c:80: предупреждение: несовместимая неявная декларация внутренней функции ‘free’
lzw.c:89: предупреждение: несовместимая неявная декларация внутренней функции ‘exit’
lzw.c:89: ошибка: слишком мало аргументов в вызове функции ‘exit’
lzw.c: В функции ‘decode_string’:
lzw.c:264: предупреждение: несовместимая неявная декларация внутренней функции ‘exit’
lzw.c:264: ошибка: слишком мало аргументов в вызове функции ‘exit’
lzw.c: В функции ‘output_code’:
lzw.c:301: ошибка: expected declaration or statement at end of input

установлен последний пакет gcc и g++...
кстати по твоей ссылке, точно такие же ошибки выдает.

Admiral,
а разве исходники предназначенные для компиляторов С под MS-DOS и исходники предназначенные для компиляторов С под Linux имеют отличия? ведь язык С, он и в Африке С, или я что-то не так понимаю...

Admiral
11-11-2009, 15:25
stas_newar, ошибки выводятся даже по-русски и говорят о недостаточном количестве передаваемых параметров функции exit - нужно заменить хотя бы на exit(1)
По последней ошибки ответ находится в 3 посте.

stas_newar
13-11-2009, 04:26
Admiral,
выставил всем надписям exit значение 1, но компилятор всеровно выдает ошибку:
lzw.c: In function ‘main’:
lzw.c:54: warning: incompatible implicit declaration of built-in function ‘exit’
lzw.c:61: warning: incompatible implicit declaration of built-in function ‘strcpy’
lzw.c:72: warning: incompatible implicit declaration of built-in function ‘exit’
lzw.c:80: warning: incompatible implicit declaration of built-in function ‘free’
lzw.c:89: warning: incompatible implicit declaration of built-in function ‘exit’
lzw.c: In function ‘decode_string’:
lzw.c:264: warning: incompatible implicit declaration of built-in function ‘exit’
lzw.c: In function ‘output_code’:
lzw.c:301: error: expected declaration or statement at end of input

обновил Ubuntu до 9.10 , поэтому уже пишет в чем ошибки на английском...

Admiral
14-11-2009, 15:37
lzw.c: В функции ‘output_code’:
lzw.c:301: ошибка: expected declaration or statement at end of input »
lzw.c: In function ‘output_code’:
lzw.c:301: error: expected declaration or statement at end of input »
пропущена закрывающая скобка "}" функции output_code () в конце исходника »




© OSzone.net 2001-2012