Lenguaje C, algunos expertos me enseñaron cómo exportar los resultados de la ejecución a un archivo específico.
Si no quieres leerlo, lee esto.
Operaciones con archivos en lenguaje C Jueves, 17 de julio de 2008 165438 + 0:43 p. m. 13.1 Archivos en lenguaje C.
1. Dos modos de acceso a archivos (modos de entrada y salida)
Acceso secuencial
Acceso directo
2.
Archivos de texto
Archivos binarios 13.2 Punteros de archivo
Defina la forma general de las variables de puntero de tipo de archivo:
ARCHIVO *Nombre de variable de puntero ;
Por ejemplo:
ARCHIVO *fp1, *fp213.3 Abrir archivo
Debe abrir el archivo antes de usarlo. Abra el archivo usando la función fopen en C. El formato es:
Fopen (nombre de archivo, propósito del archivo);
Esta función devuelve un puntero al tipo de archivo. Por ejemplo:
FILE * fp
fp=fopen("file_1", "r");
Si la llamada es exitosa, fp apuntará a file_1, de lo contrario se devolverá NULL, por lo que para garantizar el uso correcto del archivo se deben realizar pruebas. Pasó la siguiente declaración:
If((fp=fopen("file_1","r")==NULL)
{
printf("No se puede Abrir este archivo\n ");
Salir (0);
}
Los métodos de uso de archivos más utilizados y sus significados son los siguientes:
1, "r". Abre un archivo de texto para leer (error si no está presente)
2. Abra el archivo de texto para escribir (si no existe, créelo; de lo contrario, comience a escribir desde el archivo y sobrescriba el contenido original).
Abra el archivo binario
. 5. "a". Abra un archivo de texto y agregue datos después del archivo (si no existe, cree uno nuevo; en su lugar, se agrega después del documento original). archivo binario y agregue datos después del archivo.
Los métodos de uso de archivos más utilizados y sus significados son los siguientes:
7. y escritura (al leer, comience desde el principio; al escribir datos, los nuevos datos solo cubren el espacio ocupado y permanecen sin cambios)
8. Realizar lectura y escritura solo. escritura, la posición inicial de lectura y escritura se puede configurar a través de la función de posición
9. Primero, cree un nuevo archivo y luego escríbalo desde el principio. el contenido se perderá.)
10, "wb+" tiene la misma función que "w+", solo el inicio de la lectura y escritura. La posición se puede establecer a través de la función de posición.
Los métodos de uso de archivos más utilizados y sus significados son los siguientes:
11, "a+" tiene la misma función que "A" solo al final del archivo; , puede comenzar a leer desde el principio.
12, "ab+" tiene la misma función que "a+" solo después de agregar nuevos datos al final del archivo, puede configurar el inicio de la lectura; la función de posición. 13.4 Cerrar el archivo Después de leer y escribir el archivo, use la función fclose para cerrar el archivo:
Puntero de archivo
. ejemplo: fclose(FP);
13.5 Llame a las funciones getc (fgetc) y putc (fputc) para entrada y salida
1. genera un carácter.
El formato de llamada es:
putc(ch, FP);
La función escribe el carácter ch en el archivo al que apunta. puntero de archivo fp. Cuando la salida es exitosa, la función putc devuelve el carácter de salida; de lo contrario, devuelve un valor EOF.
EOF es una constante simbólica definida en el archivo de función de la biblioteca stdio.h y su valor es igual a -1.13.5. Llame a las funciones getc(fgetc) y putc(fputc) para entrada y salida.
Por ejemplo, la entrada de texto desde el teclado se envía a un archivo llamado file_1.dat tal como está, y el carácter @ se utiliza como símbolo final para la entrada del teclado.
#Incluye
Void main()
{
ARCHIVO * fpout
char ch
if(fpout=fpopen("file_1","w")==NULL)
{
printf("¡No se puede abrir este archivo!\n");
Salir(0);
}
ch = getchar();
Y (ch!='@')
{ fputc(ch, salida FP); ch = getchar(); }
fclose(salida FP); 2. Llame a la función getc (o fgetc) para ingresar un carácter.
El formato de llamada es:
ch = getc(pf);
Función: leer un carácter del archivo especificado por pf y usarlo como función valor devuelto.
Por ejemplo, envíe el contenido del archivo de texto file_1.dat existente en el disco a la pantalla del terminal tal como está.
#Incluye
void main(){
ARCHIVO * fpin
char ch
if(( ( fpin = fopen(" archivo _ 1 . dat ", " r ") = = NULL)
{ printf ("¡No se puede abrir este archivo! \ n "); p>
ch = fgetc(fpin);
And (ch!=EOF)
{ putchar(ch = fgetc(fpin);}
fclose(fpin);
}
13.6 Determinar el final de la función de archivo feof
EOF se puede utilizar como símbolo de fin de archivos de texto , pero no como binario El símbolo final del archivo. La función feof puede determinar tanto archivos binarios como archivos de texto.
Ejemplo: escriba un programa para copiar un archivo de texto (fuente) a otro archivo (archivo fuente). nombre). El nombre del archivo de destino se ingresa desde la línea de comando.
El formato del comando es el siguiente:
Nombre del programa ejecutable nombre del archivo fuente nombre del archivo
#Incluye
void filecopy(FILE*, FILE *); p>
void main(int argc, char *argv[]){
ARCHIVO *fpin, *fpout
if(argc==3)
{ fpin=fopen(argv[1], " r ");
fpout=fopen(argv[2], " w "); fuera) ;
fclose(fpin); fclose(FP fuera);
}
else if(argc & gt; 3)
printf("¡¡Demasiados nombres de archivos!!\n";
Otros
printf("¡¡No hay nombres de archivos de entrada o salida!!\n);
}
copia de archivo nula(ARCHIVO *fpin, ARCHIVO *fpout)
{
char ch
ch = getc(fpin) ;
Y (! feof(fpin))
{putc(ch, FP out); p>
13.7 Función fscanf y función fprintf
1, función fscanf
Fscanf solo se puede ingresar desde un archivo de texto formateado. Esto es similar a la función scanf, excepto que. el objeto de entrada son datos en un archivo de texto en el disco. El formato de llamada es:
Fscanf (puntero de archivo, cadena de control de formato, lista de entradas)
Por ejemplo: fscanf (fp, "%d% d ", &; a, &b);
fscanf (entrada estándar, "%d%d", &a, &b);
Equivalente a scanf (" % d% d ",&;一,&b);
Función 3.fprintf
La función Fprintf convierte los datos en la memoria en los caracteres correspondientes según el formato y los escribe en código ASCII El formulario se envía a un archivo de texto. La función fprintf es similar a la función printf, excepto que la salida se almacena en un archivo de texto en el disco de acuerdo con el formato de llamada:
Fprintf (puntero de archivo, cadena de control de formato, tabla de elementos de salida)
Por ejemplo, fprintf(fp, "%d %d", x, y);
La siguiente declaración fprintf(stdout, "%d %d", x, y)
13.8 función fgets y función fputs
1. p>es leer cadenas de archivos. El formato de llamada es el siguiente:
fgets(str, n, FP);
La función es: leer n-1 caracteres del archivo señalado por fp y colocarlos comenzando con str en el espacio de la dirección inicial; si n-1 caracteres no se leen completamente, se encuentra un carácter de nueva línea o EOF para finalizar la operación de lectura y se devuelve str como un valor de función.
13.8Función fgets y función fputs
2. Función fputs
La función fput genera una cadena en un archivo. El formulario de llamada a la función es el siguiente:
fputs(str, FP);
Nota: para facilitar la lectura, cadenas como "\n" se deben agregar manualmente al generar instrumentos de cuerda. 13.9 Función de Freud y función de escritura.
Las funciones Fread y fwrite se utilizan para leer y escribir archivos binarios.
Sus formas de llamada son las siguientes:
fread(buffer, size, count, FP);
fwrite(buffer, size, count, FP);
Buffer: la primera dirección del bloque de datos de entrada o salida.
Recuento: El número de bloques de datos de entrada o salida para cada lectura y escritura.
Tamaño: El número de bytes en cada bloque de datos.
Puntero de archivo
13.9 Función de lectura y función de escritura
Por ejemplo, existe la siguiente estructura:
Estructura st{ p >
Número de carácter[8];
float MK[5];
} pers[30];
El siguiente bucle convertirá estos 30 Los datos de los elementos se envían al archivo indicado por fp.
for(I = 0;i<30;i++)
fwrite(&pers[i],sizeof(struct st),1,FP);
13.9 Función de lectura y función de escritura
La siguiente declaración lee los datos de cada estudiante del archivo señalado por fp en la matriz pers uno por uno.
I = 0;
fred(& amppers[i], sizeof(struct st), 1, FP
Y (!feof (fp); ))
{ i++;
fred(&pers[i], sizeof(struct st), 1, FP);
}
13.10 Función de posicionamiento de archivos
1, función fseek
La función fseek se utiliza para mover el puntero de ubicación del archivo a la ubicación especificada, y las operaciones de lectura o escritura posteriores comenzarán desde esta comienza la posición. La llamada de esta función es la siguiente:
fseek(pf, offset, origen)
Pf: puntero de archivo
Offset: desplazamiento en bytes, es un entero largo.
Origen: es el punto de partida, se utiliza para especificar la posición en la que se basa el desplazamiento.
1, función fseek
Método de representación de desplazamiento
Punto de inicio representado por el número de identificador
SEEK_SET 0 inicio del archivo
El final del archivo SEEK_END 2
La posición actual del archivo SEEK_CUR 1
Suponiendo que pf ya apunta a un archivo binario, entonces;
fseek ( pf, 30L, SEEK_SET)
fseek(pf, -10L*sizeof(int), SEEK_END)
Para archivos de texto, el desplazamiento debe ser 0, por ejemplo:; p>
fseek(pf, 0L, SEEK_SET)
fseek(pf, 0L, SEEK_END)
2.función ftell
La función ftell es se utiliza para obtener el estado del archivo actual. La posición del puntero de posición. Esta función proporciona el número de bytes en el puntero de posición actual en relación con el comienzo del archivo.
Long t;
t = ftell(pf);
Cuando la llamada a la función falla, la función devuelve -1L.
Podemos probar la longitud del archivo mediante:
fseek(fp, 0L, SEEK_END
t = ftell(FP);
3. Función de rebobinado
El formato de llamada es:
Rebobinar (pf);
Esta función no devuelve un valor. La función es devolver el puntero de posición del archivo al principio del archivo.
13.10 Aplicación de archivo
Hay 10 números enteros positivos no menos de 2 en el archivo test.txt en el disco. El programa se escribe mediante llamadas a funciones. Necesidad de realizar:
1. En la función prima ajustada, juzgue y cuente los números primos y los números entre 10 enteros.
2. En la función principal, agregue todos los números primos al final del archivo de disco test.txt y envíelo a la pantalla al mismo tiempo.
#Incluye
#Incluye
Int prime(int a[], int n)
{
int I, j, k=0, bandera = 0;
for(I = 0; I { for(j = 2; j if(a[i]%j==0) p> p>
{ bandera = 0; romper }
else bandera = 1
if(bandera)
{ a[k] = a [I];k++;}
}
Devolver k;
}
void main(){
int n, I, a[10];
ARCHIVO * fp
fp=fopen("test1-2.txt ", " r+"); p>
for(n = 0; n <10;n++)
fscanf(fp, " %d ", & ampa[n]); (a , n);
fseek(fp, o, 2
for(I = 0; i {printf("%3d ", a[I]);
p>
fprintf(fp, " %3d ", a[I]
}
fclose(FP); >
}