C/C++

Программа на C++ с переводом Char в Int и наоборот при переводе возвращает НИЧЕГО

Доброго времени суток, господа, прошу откликнуться и помочь! Написал парочку функций для перевода Int в Char и наоборот и написал программу для теста:

 #include   

#define INT_MIN -2147483648

#define INT_MAX 2147483647



int Char2Int(char string[]) {

bool negative = false;

int outputValue = 0;

int stringLength = 0;

while (string[stringLength] != '\0') { // count the number of characters in the string

stringLength++;

}

for (int i = 0; i < stringLength; i++) {

if (string[i] == '-') {

negative = true; // remember that the input string is negative

} else if (string[i] >= '0' && string[i] INT_MAX) {

return ""; // return an empty string if the input is out of range

}



// Handle the special case where the input integer is 0

if (inputNumber == 0) {

resultString[0] = '0';

resultString[1] = '\0';

return resultString;

}



// Convert the integer to a string

int absoluteInputNumber;

if (inputNumber < 0) {

absoluteInputNumber = inputNumber * -1; // take the absolute value of inputNumber

resultString[0] = '-'; // add a minus sign to the beginning of the string

} else {

absoluteInputNumber = inputNumber;

}

int digit, reversedNumber = 0, resultIndex = 0;

while (absoluteInputNumber > 0) {

digit = absoluteInputNumber % 10;

reversedNumber = reversedNumber * 10 + digit;

absoluteInputNumber = absoluteInputNumber / 10;

}

while (reversedNumber > 0) {

resultString[resultIndex + 1] = (reversedNumber % 10) + '0'; // start at resultIndex + 1 to skip the minus sign

resultIndex++;

reversedNumber = reversedNumber / 10;

}

resultString[resultIndex + 1] = '\0'; // add a null terminator to the end of the string

return resultString; // return a pointer to the character array

}





int main() {

int inputNumber = 12345;

printf("Integer: %d\n", inputNumber);

printf("String: %s\n", Int2Char(inputNumber));

int outputNumber = Char2Int(Int2Char(inputNumber)); // convert the string back to an integer

printf("Output: %d\n", outputNumber);

return 0;

}


Ожидаю вывод:

Integer: 12345
String: 12345
Output: 12345

Получаю:

Integer: 12345
String:
Output: 0

Знатоки, в чем может быть проблема?
 #include  

#define INT_MIN -2147483648
#define INT_MAX 2147483647

int Char2Int(char string[]) {
bool negative = false;
int outputValue = 0;
int stringLength = 0;

// skip leading whitespace characters
while (string[stringLength] == ' ') {
stringLength++;
}

for (int i = stringLength; string[i] != '\0'; i++) {
if (string[i] == '-') {
negative = true;
} else if (string[i] >= '0' && string[i] INT_MAX/10) {
return 0;
}
outputValue = outputValue * 10 + (string[i] - '0');
} else {
return 0;
}
}

// check for negative overflow
if (negative && outputValue == INT_MIN) {
return 0;
}

if (negative) {
outputValue *= -1;
}

return outputValue;
}

char* Int2Char(int inputNumber) {
static char resultString[32];

// check for out-of-range input
if (inputNumber < INT_MIN || inputNumber > INT_MAX) {
return "";
}

// handle the special case of input integer 0
if (inputNumber == 0) {
resultString[0] = '0';
resultString[1] = '\0';
return resultString;
}

int absoluteInputNumber;
int resultIndex = 0;
if (inputNumber < 0) {
absoluteInputNumber = inputNumber * -1;
resultString[resultIndex++] = '-';
} else {
absoluteInputNumber = inputNumber;
}

// convert the integer to a string
while (absoluteInputNumber > 0) {
resultString[resultIndex++] = (absoluteInputNumber % 10) + '0';
absoluteInputNumber /= 10;
}

resultString[resultIndex] = '\0';

// reverse the result string
for (int i = 0; i < resultIndex / 2; i++) {
char temp = resultString[i];
resultString[i] = resultString[resultIndex - i - 1];
resultString[resultIndex - i - 1] = temp;
}

return resultString;
}


int main() {
int inputNumber = 12345;
printf("Integer: %d\n", inputNumber);
printf("String: %s\n", Int2Char(inputNumber));
int outputNumber = Char2Int(Int2Char(inputNumber));
printf("Output: %d\n", outputNumber);
return 0;
}
Борис
Борис
2 589
Лучший ответ
 char* Int2Char(int inputNumber)  
{

static char resultString[17]{'0'}; // define the character array as a static local variable
char reverse[17]{}; //reverse buffer
// Convert the integer to a string
int it = 0, rev_it = 0; //forvard and revers iterator
if (inputNumber < 0) //add negative as needed
{
resultString[it++] = '-'; inputNumber = -inputNumber;
}

while (inputNumber)
{
reverse[rev_it++] = '0' + inputNumber % 10;
inputNumber /= 10;
}

while (rev_it) //copy from reverse to string
{
resultString[it++] = reverse[--rev_it];
}
return resultString; // return a pointer to the character array
}
Сергей Матвеев
Сергей Матвеев
51 416
Дмитрий Дровняшин Работает! Спасибо!
в resultString[0] ничего не пишется, и там остаётся лежать 0
Дмитрий Дровняшин Как это не пишется? Пишется, но не выводит.
reversedNumber / 10; цифру перепутал
Дмитрий Дровняшин Поподробнее пожалуйста!