[C con Clase] Varos problemas...

Salvador Pozo salvador en conclase.net
Dom Oct 7 12:24:55 CEST 2007


El pasado 2007-10-07 09:28:34, Alejandro escribió:
 
A> Hola lista:

Hola:

A> 1. ¿Cómo creo archivos en directorios distintos al del programa?...
A>       FILE *fichero;
A>       fichero = fopen("\Archivos\archivo.txt", "a");
A> Y Windows me da el problema "Prueba.exe ha detectado..." creo que ya nos lo conocemos todos. ¿Alguna solución?

Hay varios errores en tu forma de abrir el fichero:
1) Las barras '\' deben duplicarse. Esto se debe a que ese carácter se usa para formar secuencias de escape, y si se quiere usar de forma literal debe usarse la secuencia de escape correspondiente '\\'. Verás que a pesar de parecer dos caracteres se puede usar la notación '' que corresponde a caracteres únicos. Tu cadena de nombre de fichero quedaría "\\Archivos\\archivo.txt"
2) Windows no es muy listo a la hora de reconocer caminos absolutos, necesita que le digas el nombre de la unidad de disco, en este caso podría ser: "c:\\Archivos\\archivo.txt". Pero esto es demasiado drástico, ya que no hay manera de saber en qué unidad de disco puede ejecutarse el mismo programa en otros ordenadores.
3) Además, fopen no creará los directorios que no existan, de modo que si C:\Archivos no existe, el programa fallará de nuevo.
4) Es mejor usar caminos relativos, para eso usamos el "." para referirnos al directorio actual (en el que se ejecuta la aplicación a no ser que se indique lo contrario, o ".." para el directorio padre. Tu camino puede quedar así:
".\\Archivos\\archivo.txt"

A> 2. ¿Se pueden borrar caracteres sueltos de un programa? Por ejemplo, ¿puedo borrar el caracter que está en la segunda fila en la séptima posición y moverlo a la tercera fila en la misma séptima posición?

Esta pregunta no sé si la entiendo. Me parece que quieres que tu programa lea un carácter desde la consola de la pantalla y no inserte en otro lugar. Si es así, todo depende de cómo estés programando. Me refiero al entorno, a si usas el API de Windows, etc.

Si lo que quieres es hacer cosas del tipo que se hacen en un editor de textos, esas cosas no se hacen directamente sobre la pantalla, sino que es al contrario, se realizan en memoria y la pantalla se actualiza cuando es necesario.

A> 3 (y última). ¿Cómo detecto si el usuario pulsa por ejemplo la flecha hacia abajo o el botón Escape?

Esto también depende del entorno en el que programes, ya que no existen funciones estándar para detectar esas teclas.

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


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