Archivo de capítulo único de Otaru C++⑨

Tabla de contenido

1. Definición y referencia de variables de tipo de archivo.

1.1 Leer y escribir archivos

Versión 1.2 fopen() (solo C)

1.3 Flujos de entrada y salida de archivos (solo C++)


Hay dos formas de guardar archivos: archivos binarios y archivos de texto. Por ejemplo, guarde el número 121.

El almacenamiento binario es eficiente, pero no es amigable para nosotros: ¡es demasiado difícil convertir cada valor a binario! Entonces, tomemos un texto de archivo simple. El formulario de texto se puede traducir a texto utilizando el código ASCII, lo cual es más conveniente. La entrada y salida del concurso de informática son todos archivos de texto.

Para aprender archivos, debemos comprender, crear archivos, abrir archivos, leer y escribir archivos y cerrar archivos.

 

1. Definición y referencia de variables de tipo de archivo.

Hay dos formas en que los programas C++ manejan los buffers de archivos: streaming y E/S. Las operaciones de archivos de transmisión se utilizan generalmente en competencias de informática, por lo que aprendemos principalmente sobre transmisión. Hay dos tipos de archivos de transmisión:

  • Archivo de flujo de clase de flujo.
  • Puntero de archivo ARCHIVO.

Para importar la biblioteca: #include<cstdio> para usar el archivo.

1.1  Leer y escribir archivos

Leer archivo de entrada en modo de solo lectura

Formato: freopen("nombre de archivo", "r", stdin);

Leer el archivo de salida en modo de escritura

Formato: freopen("nombre de archivo", "w", salida estándar);

Finalmente, asegúrese de cerrar los archivos de entrada y salida;

fclose(stdin);fclose(stdin);

plantilla de código de archivo freeopen

   

freopen admite scanf, printf, cin, cout y otros métodos para la entrada y salida de archivos.

Ejemplo 1. Lea los datos del archivo in.txt y guarde su suma en out.txt;

Análisis: 1. Primero escriba la plantilla de código de archivo, 2. Sume el código.

Para crear el archivo de entrada en.txt en la ruta correspondiente.

#include<iostream>
#include<cstdio>
using namespace std;
int main(){	
	freopen("in.txt","r",stdin); //文件数据读取 
	freopen("out1.txt","w",stdout); //文件结果写入   
	int n,sum=0;
//	for(int i=1;i<=5;i++){ //for循环求和 
//		cin>>n;
//		sum += n;
//	}
	while(cin>>n){//while循环求和 
		sum += n;
	}
	cout<<sum;
	fclose(stdin); fclose(stdout);
	return 0;
} 

 Se puede encontrar que en el código anterior, excepto la plantilla del marco de archivos, los otros códigos son fórmulas de cálculo para operaciones de suma.

Después de ejecutar el código, se generará el archivo out1.txt de freopen("out1.txt","w",stdout);

 

Los resultados de salida se mostrarán en out1.txt. ¡Asombroso! ! !


Versión 1.2  fopen() (solo C)

Además del método freopen para leer archivos, también tenemos el método fopen para leer archivos. Se utiliza el puntero de archivo ARCHIVO.

En comparación con freopen, este método fopen() solo admite scanf y printf; para entrada y salida de archivos.

plantilla de código de archivo fopen

 Ejemplo 2. Ordenar ordenar. Ingrese n números enteros y ordénelos en orden ascendente.

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
	FILE *fin,*fout;	
	fin = fopen("sort.txt","r"); 
	fout = fopen("out.txt","w");  
	int a[1000],n,sum=0;
	fscanf(fin,"%d",&n);
	for(int i=0;i<n;i++){
		fscanf(fin,"%d",&a[i]);
	}
	sort(a,a+n);
	for(int i=0;i<n;i++){
		fprintf(fout,"%d ",a[i]);
	}
	fclose(fin); fclose(fout);
	return 0;
} 

Recuerde definir primero el archivo sort.txt, ingresar 6 números como se muestra arriba y ordenar los 6 números enteros. ! .

Se puede encontrar que los códigos de operación para abrir y cerrar el archivo son diferentes esta vez.


1.3  Flujos de entrada y salida de archivos (específicos de C++)

 Importe la biblioteca primero: #include<fstream>

Plantilla de código de archivo de transmisión

Ejemplo 3. Lea los datos del archivo in.txt y guarde su suma en out.txt;

Análisis: 1. Primero escriba la plantilla de código de archivo, 2. Sume el código

#include<fstream>
#include<iostream>
using namespace std;
int main(){
	ifstream fin("in.txt");
	ofstream fout("out.txt");   
	int n,sum=0;
	while(fin>>n){//while循环求和 
		sum += n;
	}
	fout<<sum<<endl;
	fin.close(); fout.close();
	return 0;
} 

Supongo que te gusta

Origin blog.csdn.net/weixin_44775255/article/details/129402666
Recomendado
Clasificación