2014-10-05 5 views
-1

Первоначально у меня была проблема с моими аргументами, но это было исправлено. Однако теперь я получаю ошибку сбоя seg и не знаю, как это исправить.Создание функции hashcode с использованием рекурсии

вот мой код

int hash_code(const char* str){ 
int len = strlen(str); 
char dst[len-1]; 
if(len == 0) 
    return 0; 
else{ 
strncpy(dst, str, (len - 1)); 
return (hash_code(dst) * 27) + str[len-1]; 
} 
} 
+1

В коде есть много вещей, которые в корне неверны, но самая большая проблема здесь заключается в том, что «умножение этого кода на 65599» не делает то, что вы думаете. – Will

+0

Использование 'strncpy()' почти всегда неверно. также: это 'strncpy (dst, src, len)', поэтому у вас появляется первый и второй аргументы. И нигде нет. – wildplasser

+0

@wildplasser не могли бы вы подробнее рассказать о том, почему strncpy() почти всегда ошибается? – Mark

ответ

0

" error: passing argument 1 of 'strncpy' discards 'const' qualifier from pointer target type"

результатов Этой ошибки из-за того, что первый аргумент принимается strncpy имеет типа char* но вы передаете const char*. Прототип Strncpy -

char * strncpy (char * destination, const char * source, size_t num); 
       ^^^^^^^^^^^^^^^^^^ 

Первый указатель является указателем на пункт назначения, а не источником.

+0

спасибо, что обновил OP, но теперь я получаю ошибку seg по какой-то причине – Mark

+0

@Dad, пожалуйста, покажите нам фактический код, который segfaults, как сейчас, вы должны сделать это в отдельном вопросе – 4pie0

+0

Код на op - это код, который segfaults, и я не хочу спамить, вы думаете, что это действительно вопрос, чтобы задать еще один вопрос? – Mark

Смежные вопросы