Cita:
Iniciado por lord_zoo Bueno, definitivamente poniento a archiv como puntero se solucionaba perfectamente el problema.
Realmente me confunde un poco esto, ya que en los ejemplos que vi, no estaba de esta manera, ni tampoco como un arreglo. Asi que una de dos cosas, o el ejemplo estaba mal redactado o es muy viejo y algo en C cambio. :D
Igual, mil gracias, aunque ahora no se si siempre que use un char, aunque despues lo inicialice con una cadena estatica tenga que hacerlo como puntero.
Pero ahora estoy un poco mas sabio y eso me va a ayudar.
Gracias de nuevo.
Saludos.
Un char equivale a un byte... Nada más que un byte. Y un puntero a char es una dirección a un byte... O a más. Para almacenar cadenas (las que sean) debes usar arrays (_no_ arreglos) o punteros.
Acostúmbrate a usar strcpy. Porque parece ser que te leo como diciendo "voy a usar siempre el operador de asignación (=)", y si lo haces vas a obtener resultados que te parecerán extraños. Por ejemplo, tenemos:
Código:
char * a;
char * b;
a = "Hola";
b = a;
Después de ese código pensarás que a contiene "Hola" y b contiene "Hola". No es cierto. Los punteros no "contienen". Los punteros apuntan. Por esa razón a apunta a una dirección que pone "Hola" y b a esa misma. Si tú cambias 'a' por "Adios", b como apunta al mismo sitio, también será "Adios". Y viceversa.
Si usas strcpy te aseguras de que estás copiando la cadena, no la dirección. Eso sí, con strcpy debes tener un array (que ya tiene memoria asignada) o asignarla tú dinámicamente.
Lo de la versión o fabricante del compilador da =, ejemplos tan simples no dependen de eso... a menos que sea uno extraño no compatible con ANSI-C.