Вопрос Программа на c++ с переводом char в int и наоборот при переводе возвращает ничего

Регистрация
14 Дек 2013
Сообщения
90
Репутация
1
Спасибо
0
Монет
0
Доброго времени суток, господа, прошу откликнуться и помочь! Написал парочку функций для перевода 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 == '-') {



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



} else if (string >= '0' && string 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



Знатоки, в чем может быть проблема?
 
в resultString[0] ничего не пишется, и там остаётся лежать 0
 
reversedNumber / 10; цифру перепутал
 
#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 != '\0'; i++) {
if (string == '-') {
negative = true;
} else if (string >= '0' && string INT_MAX/10) {
return 0;
}
outputValue = outputValue * 10 + (string - '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;
resultString = 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;
}
 
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
}
 
Назад
Сверху