Cómo abrir un archivo en lenguaje C
1.2 Funciones de entrada y salida de archivos
La entrada y salida de dispositivos lógicos como teclados, monitores, impresoras, unidades de disco, etc. se puede completar mediante métodos de gestión de archivos. Los archivos de disco se utilizan con mayor frecuencia en la programación. Por lo tanto, esta sección se centra principalmente en los archivos de disco y presenta en detalle las funciones de operación de archivos proporcionadas por Turbo C2.0. Por supuesto, estas funciones de operación de archivos también son adecuadas para archivos que no son de disco.
Además, Turbo C2.0 proporciona dos tipos de funciones relacionadas con archivos. Un tipo se llama funciones de archivo estándar, también llamadas funciones de archivo almacenadas en búfer, que son funciones definidas por el estándar ANSI; el otro tipo se llama funciones de archivo no estándar, también llamadas funciones de archivo no almacenadas en búfer. Este tipo de función se utilizó por primera vez en los sistemas operativos UNIX, pero ahora también se puede utilizar en sistemas operativos MS-DOS3.0 y superiores
. Se presentan por separado a continuación.
1.2.1 Funciones de archivo estándar
Las funciones de archivo estándar incluyen principalmente funciones de apertura, cierre, lectura y escritura de archivos. A diferencia de BASIC y FORTRAN, existen archivos secuenciales y archivos aleatorios, que deben determinarse de diferentes maneras al abrirlos.
Turbo C2.0 no distingue entre estos dos tipos de archivos, pero proporciona dos conjuntos de funciones, a saber, funciones de lectura y escritura secuenciales y funciones de lectura y escritura aleatorias.
1. Apertura y cierre de archivos
Cualquier archivo debe abrirse y cerrarse antes y después de su uso. Esto se debe a que el sistema operativo tiene un límite en la cantidad de archivos que se pueden almacenar. abiertos al mismo tiempo Hay restricciones En el sistema operativo DOS, puede definir el número n de archivos que se pueden abrir al mismo tiempo en DEVICE.SYS (definido con archivos = n). Donde n es la cantidad de archivos que se pueden abrir al mismo tiempo, generalmente nlt; = 20. Por lo tanto
Debes abrir el archivo antes de usarlo para acceder a la información que contiene. Debe cerrarlo después de usarlo; de lo contrario, se producirán algunos errores inesperados. Turbo C2.0
proporciona funciones para abrir y cerrar archivos.
1. Función fopen()
La función fopen se utiliza para abrir un archivo. Su formato de llamada es:
FILE *fopen(char *filename, *tipo);
Antes de introducir esta función, primero comprenda los siguientes conocimientos.
(1) Flujo (flujo) y archivo (archivo)
Existe una diferencia entre flujo y archivo en Turbo C2.0. Turbo C2.0 es para programadores y se accede a A. Se proporciona una capa de abstracción entre los dispositivos, que se denomina "flujo", y el dispositivo real específico se denomina archivo. Una secuencia es un dispositivo lógico y tiene el mismo comportamiento. Por lo tanto, las funciones utilizadas para escribir archivos de disco también se pueden utilizar para escribir en impresoras. Hay dos tipos de flujos en Turbo C2.0: flujo de texto y flujo binario. Para los discos, son archivos de texto y archivos binarios
. Para facilitar a los lectores la comprensión del lenguaje Turbo C2.0, este software no hace ninguna distinción especial entre transmisiones y archivos.
(2) Puntero de archivo ARCHIVO
De hecho, ARCHIVO es un nuevo tipo de datos. Es una colección de tipos de datos básicos de Turbo C2.0, llamado puntero de estructura. El concepto de estructura se presentará en detalle en la Sección 4. Aquí solo necesitamos entender ARCHIVO como una estructura de datos que incluye información sobre la administración de archivos, es decir, primero se debe definir un puntero de archivo al abrir un archivo.
(3) El formato de llamada de función introducido más adelante escribirá directamente el tipo de datos de los parámetros formales y el tipo de datos del valor de retorno de la función.
Por ejemplo: la función anterior para abrir un archivo devuelve un puntero de archivo, en el que hay dos parámetros formales, los cuales son variables de caracteres (matriz de cadena o puntero de cadena). Este software ya no explica en detalle el formato de llamada de función.
Ahora veamos el uso de la función de abrir archivo.
El primer parámetro formal en la función fopen() representa el nombre del archivo, que puede incluir tanto la ruta como el nombre del archivo.
Por ejemplo:
"B:TEST.DAT"
"C:\\TC\\TEST.DAT"
Si es incorrecto escribir la ruta como "C:\TC\TEST.DAT", preste especial atención a este punto.
El segundo parámetro formal indica el tipo de archivo a abrir. Consulte la siguiente tabla para conocer las regulaciones sobre tipos de archivos.
Tipo de operación de archivo de tabla
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Significado del carácter
———————————————————————————————
" r" Abrir archivo de texto para solo lectura
"w" Crear archivo de texto para escribir solamente
"a" Complemento, si el archivo no existe, crear uno
"r " Abrir un archivo de texto de lectura/escritura
"w " Crear un archivo de texto de lectura/escritura
"a " Abrir o crear un archivo adjunto
Archivo binario "b" (se puede utilizar con cada uno de los elementos anteriores)
Archivo "t" (elemento predeterminado)
━━━━━━━━━━ ━━━━━━ ━━━━━━━━━━━━
Si deseas abrir un archivo binario llamado CLIB en un subdirectorio CCDOS, puedes escribir:
fopen("c :\\ccdos\\clib", "rb");
Si un archivo se abre correctamente, la función fopen() devuelve el puntero del archivo; de lo contrario, devuelve un puntero nulo ( NULO). Esto puede determinar si el archivo se abrió correctamente.
2. Función fclose()
La función fclose() se utiliza para cerrar un archivo abierto por la función fopen(). Su formato de llamada es:
Esta función devuelve un número entero. Cuando el archivo se cierra correctamente, se devuelve 0; de lo contrario, se devuelve un valor distinto de cero. Puede determinar si el archivo se cerró correctamente en función del valor de retorno de la función.
Ejemplo 10:
#iclude
main()
{
ARCHIVO *fp /* Definir un puntero de archivo*/
int i;
fp=fopen("CLIB", "rb" /*Abra el archivo llamado CLIB en el directorio actual para lectura únicamente). */
if(fp==NULL) /*Determina si el archivo se abrió correctamente*/
puts("Error de apertura del archivo" /*Pregunta que el archivo está abierto); no se abrió correctamente*/
i=fclose(fp); /*Cerrar el archivo abierto*/
if(i==0) /*Juzgar si el archivo se cerró correctamente */
printf ("O, K"); /*Solicitud de cierre exitoso*/
else
puts("Error de cierre del archivo"); *El mensaje se cerró sin éxito*/
}