Biblioteca estándar de C++ <cstdio>
<cstdio>es un archivo de encabezado en la biblioteca estándar de C++, que contiene la encapsulación de C++ de la biblioteca de E/S estándar de C, utilizada principalmente para operaciones de entrada y salida de archivos.
<cstdio>La biblioteca define un conjunto de funciones para realizar operaciones de entrada y salida, que pueden utilizarse para leer y escribir archivos y la consola.
Sintaxis
Al usar<cstdio>las funciones de la biblioteca, debe incluir este archivo de encabezado en la parte superior del programa C++:
#include <cstdio>
Funciones comunes
<cstdio>La biblioteca contiene muchas funciones para E/S de archivos. A continuación se presentan algunas funciones comunes:
fopen: abre un archivo.fclose: cierra un archivo.fread: lee datos de un archivo.fwrite: escribe datos en un archivo.fprintf: escribe salida formateada en un archivo.fscanf: lee entrada formateada de un archivo.fgetc: lee un carácter de un archivo.fputc: escribe un carácter en un archivo.fgets: lee una línea de un archivo.fputs: escribe una línea en un archivo.
Ejemplo
1. Abrir y cerrar archivos:
Ejemplo
int main() {
FILE *file = fopen("example.txt", "w"); // Abre el archivo para escritura
if (file == NULL) {
perror("Error opening file");
return 1;
}
fclose(file); // Cierra el archivo
return 0;
}
2. Escribir datos en un archivo:
Ejemplo
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
perror("Error opening file");
return 1;
}
fprintf(file, "Hello, World!n");
fclose(file);
return 0;
}
Se escribió "Hello, World!" en el archivo "example.txt".
3. Leer datos de un archivo:
Ejemplo
#include <iostream>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
}
char buffer[100];
while (fgets(buffer, 100, file) != NULL) {
std::cout << buffer;
}
fclose(file);
return 0;
}
Se leyó y mostró "Hello, World!" del archivo "example.txt".
4. Uso de fscanf y fprintf para entrada y salida formateada:
Ejemplo
int main() {
FILE *file = fopen("data.txt", "w");
if (file == NULL) {
perror("Error opening file");
return 1;
}
fprintf(file, "%d %fn", 42, 3.14159);
fclose(file);
file = fopen("data.txt", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
}
int number;
float pi;
fscanf(file, "%d %f", &number, &pi);
fclose(file);
std::printf("Number: %d, Pi: %fn", number, pi);
return 0;
}
Resultado de salida:Number: 42, Pi: 3.141590
fopen y fclose
Se utilizan para abrir y cerrar archivos.
Ejemplo
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
// Operaciones de archivo
fclose(file);
} else {
// Manejo de errores
}
return 0;
}
fread y fwrite
Se utilizan para leer y escribir datos de archivos.
Ejemplo
int main() {
FILE* file = fopen("example.bin", "wb");
if (file) {
int data = 12345;
fwrite(&data, sizeof(data), 1, file);
fclose(file);
}
return 0;
}
fseek y ftell
Se utilizan para mover el puntero de archivo y obtener la posición del puntero de archivo.
Ejemplo
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
fseek(file, 0, SEEK_END); // Moverse al final del archivo
long size = ftell(file); // Obtener el tamaño del archivo
fclose(file);
}
return 0;
}
fflush
Refresca el flujo de archivo y escribe los datos del búfer en el archivo.
Ejemplo
int main() {
FILE* file = fopen("example.txt", "w");
if (file) {
fputs("Hello, World!", file);
fflush(file); // Asegura que los datos se escriban inmediatamente en el archivo
fclose(file);
}
return 0;
}
printf y fprintf
Se utilizan para la salida formateada a la salida estándar o a un archivo.
Ejemplo
int main() {
int value = 42;
printf("Value: %d\n", value); // Salida a la salida estándar
FILE* file = fopen("output.txt", "w");
if (file) {
fprintf(file, "Value: %d\n", value); // Salida a un archivo
fclose(file);
}
return 0;
}
scanf y fscanf
Se utilizan para la entrada formateada desde la entrada estándar o un archivo.
Ejemplo
int main() {
int value;
scanf("%d", &value); // Leer desde la entrada estándar
FILE* file = fopen("input.txt", "r");
if (file) {
fscanf(file, "%d", &value); // Leer desde un archivo
fclose(file);
}
return 0;
}
sprintf y sscanf
Se utilizan para la salida formateada a una cadena y la lectura desde una cadena.
Ejemplo
int main() {
char buffer[50];
int value = 42;
sprintf(buffer, "Value: %d", value); // Salida a una cadena
int readValue;
sscanf(buffer, "Value: %d", &readValue); // Leer desde una cadena
return 0;
}
fgets y fputs
Se utilizan para leer cadenas de un archivo y escribir cadenas en un archivo.
Ejemplo
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
char buffer[100];
if (fgets(buffer, sizeof(buffer), file)) {
// Lectura exitosa
}
fclose(file);
}
file = fopen("example.txt", "w");
if (file) {
fputs("Hello, World!\n", file); // Escribir la cadena en el archivo
fclose(file);
}
return 0;
}
getc y putc
Se utilizan para leer caracteres de un archivo y escribir caracteres en un archivo.
Ejemplo
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
int c = getc(file); // Leer un carácter
fclose(file);
}
file = fopen("example.txt", "w");
if (file) {
putc('A', file); // Escribir un carácter
fclose(file);
}
return 0;
}
feof y ferror
Se utilizan para detectar el final del archivo y errores de archivo.
Ejemplo
#include <cstdio>
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
while (!feof(file)) {
int c = getc(file);
if (ferror(file)) {
// Manejo de errores
break;
}
// Procesar caracteres
}
fclose(file);
}
return 0;
}
EOF
Representa el indicador de fin de archivo.
Ejemplo
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
int c;
while ((c = getc(file)) != EOF) {
// Procesar caracteres
}
fclose(file);
}
return 0;
}
NULL
Representa el puntero nulo.
Ejemplo
int main() {
FILE* file = fopen("example.txt", "r");
if (file == NULL) {
// Manejo de error de apertura de archivo
} else {
fclose(file);
}
return 0;
}
Notas
- Al utilizar
<cstdio>la biblioteca, debe asegurarse de manejar correctamente la apertura y el cierre de archivos para evitar fugas de recursos. - Al utilizar
fopendebe proporcionar la ruta y el modo de archivo correctos. - Al utilizar
fprintfyfscanfla cadena de formato debe coincidir con los tipos de variables.