Вы можете использовать цикл for
, чтобы выполнить итерацию по всем символам строки, а затем применить преобразование для каждого символа.Имейте в виду, что строки C заканчиваются нулем .
Также обратите внимание, что 4 символа будет недостаточно, если вы хотите сохранить \x61\x62\x63\x64
- вам понадобится 4 * strlen(str) + 1
, т.е.17.
В ответ на код:
Вам на самом деле не нужно ch
.Функция charToHex
возвращает void
, то есть ничего.
Просто скопируйте символы в выходную строку, например:
str2[2*i] = hex[0];
str2[2*i+1] = hex[1];
Опять не надоне забудьте установить нулевой терминатор в результирующей строке.
Кроме того, поскольку вы вызываете strlen
на каждой итерации, вы пишете алгоритм Шлемеля Пейнтера .