Tengo un problema con un ejercicio que me encontré en la web y que pensé que no me daría problemas y empecé a escribir código, pero le subestimé. Haha Mi problema es el siguiente, tomar una cadena por teclado e invertirla y ponerla dentro de otro arreglo. Cuando inserto una cadena grande, el programa si la invierte muy bien; sin embargo, cuando coloco cadenas cortas el programa inserta además 'basura'.
Acá les dejaré el código fuente:
Código
#include <iostream> #include <cstdlib> using namespace std; int main() { char MString[40]; char BString[40]; int CVariable = 0; cout << "Enter a string: "; cin >> MString; for(int h = 0; h < 39; h++) { if(!(MString[h] == '\0')) CVariable += 1; else if(MString[h] == '\0') break; } for(int h = 1; h <= CVariable; ++h) BString[(h - 1)] = MString[CVariable - h]; cout << "--------------------------------------------" << endl; cout << "The string has: " << CVariable << " letters." << endl; cout << "The original string: " << MString << endl; cout << "The backwards string is: " << BString << endl; cout << "--------------------------------------------" << endl; system("pause>nul"); return 0; }
Y el problema radica acá:
Código
for(int h = 1; h <= CVariable; ++h) BString[(h - 1)] = MString[CVariable - h];
¡Gracias de antemano!