Хорошо, так что я понял это. Проблема в том, что строка, которую вы передаете в функцию. Когда вы пишете "-535"
строка размещается в разделе данных программы, и вам не разрешено ее писать. Если число отрицательное, вы пытаетесь изменить эту строку, сдвигая цифры над знаком -
. Вот почему он падает только на отрицательные числа.
int main(int argc, const char *argv[]) {
char c[200];
strcpy(c, "-535");
printf("asdf %x\n", StrToHex(c).Value);
}
Этот фрагмент работает для меня в функции main
. Вы никогда не сможете передавать константные строки в функцию или указатели, которые ссылаются на строки такого типа:
char c[200] = "-535";
StrToHex(c);
также вылетит.
Вы должны указать область памяти, в которой у вас есть права на запись.
Еще один обходной путь к вашей проблеме - не изменять строку для удаления -
, а писать свой код, просто игнорируя его:)