Я предполагаю разработать функцию, которая получает char *, возвращает новый char (он не должен разделять память с этим, который он дал) и конвертирует lowerCase tu UpperCase и наоборот. Я понял, что должен добавить символ '\ 0' (на новом char *, называемом 'retorno'), как только я закончу sh, повторяя на char *, заданном функцией ('palabra'). Вывод, который я получаю, является мусором; пример токового выхода:
Prueba Invertir Case de palabra 1 -> ERROR salida incorrecta
Parametros de entrada:
Se esperaba:
Se recibio: Э§§§§нннcЙtp
----------------------------------------------
Prueba Invertir Case de palabra 2 -> ERROR salida incorrecta
Parametros de entrada: hola
Se esperaba: HOLA
Se recibio: ЭЭЭЭЭ§§§§
----------------------------------------------
Prueba Invertir Case de palabra 3 -> ERROR salida incorrecta
Parametros de entrada: Write in C
Se esperaba: wRITE IN c
Se recibio: ЭЭЭЭЭЭЭЭЭЭЭ§§§§
Это мой код, вопрос в том, КАК МОЖЕТ ДОБАВИТЬ этот символ \ 0 в "retorno"? Это единственная проблема, с которой я сталкиваюсь ???
char* invertirCase(char* palabra)
{
char* retorno = new char[largo(palabra)+1];
int i = 0;
while (palabra[i] != '\0') {
if (palabra[i]>= 'A' && (palabra[i] )<= 'Z') {
palabra[i] += 32;
}
if (palabra[i] >= 'a' && palabra[i] <= 'z') {
palabra[i] -= 32;
}
i++;
}
retorno [i] = '\0';
return retorno;
}
Я разработал полностью решение, и теперь оно сработало! Если кто-то предложит улучшения, то будет более чем приветствоваться!
int i = 0;
char c;
do
{
c = palabra[i];
if( c >= 'A' && c <= 'Z' )
c += 'a' - 'A';
else if( c >= 'a' && c <= 'z' )
c -= 'a' - 'A';
retorno[i] = c;
i++;
} while( c != '\0');`