[C con Clase] Duda: argv a char[]

Sergio Torró storro.zgz en gmail.com
Mie Feb 15 18:55:30 CET 2012


Muy buenas a todos. Es el primer correo que escribo a esta lista, así 
que antes de nada me presento: soy un joven estudiante de programación 
(FP) que hace poco decidió dedicar parte de su tiempo libre a seguir el 
magnifico curso “C++ con Clase” :-) Oficialmente estudio Java, pero me 
interesa también aprender C++ y tengo alguna noción de C de cosas que he 
ido haciendo por mi cuenta. Ahora mismo estoy terminando los problemas 
del capítulo 10 y mi duda es la siguiente:

El problema surge en el ejercicio 5 al asignar el parámetro pasado al 
main a un char[]. El caso es que ademas de meter el valor que le paso, 
mete después de este “basura” y no se porque lo hace exactamente, ni 
como puedo controlarlo. En el ejercicio 4 no he tenido muchos problemas 
ya que casteo el char a int para incrementarlo (no se si es correcta esa 
resolución, pero funciona, aunque también mete “basura” en el char ;-P 
pero el casteo la ignora¿).

Pongo el código de lo que intento explicar:

int main(int argc, char *argv[])
{
char p[40];

if (argc < 2)
{
cout << "Introduce una palabra (max. 40 chars): ";
cin >> p;
}
else
{
for (int i = 0; argv[1][i] != '\0'; i++)
{
p[i] = argv[1][i];
}
cout << "p = " << p << endl;
}
......
......
}

El resultado de “p” es el valor que le paso más un montón de símbolos y 
números. ¿Es correcto como lo estoy haciendo? ¿De donde sale todos esos 
símbolos?

El programa me funciona correctamente si no uso los parámetros del main, 
pero soy un poco cabezón y me he emperrado en hacerlo funcionar!

Un saludo y gracias :-)

PD: Se acerca mi cumpleaños y estoy pensando en regalarme a mi mismo un 
buen libro de C++. He visto que hablan muy bien de los libros de Deitel, 
¿me podríais recomendar alguno bueno?




Más información sobre la lista de distribución Cconclase