[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