Jeżeli chodzi Ci o zamianę zmiennej typu string to polecam zastosować istringstream.
W moim odczuciu jest to prosta metoda i dość klarowna, nie sprawdzałem czy działa na C ale na C++ śmiga.
string str = "123";
int i;
istringstream iss(str);
iss >> i;
W linku masz parę opcji jak to można zrobić.
https://4programmers.net/C/Konwersje_int_na_string_i_string_na_int#c-istringstream