Lectura de Archivos
int leidos = fscanf(stream, formato, punteros);
//Hay distintas alternativas para la condicion del ciclo
while (leidos != EOF)
(leidos == nro) //nro: Cantidad de punteros
{
// Procesar
leidos = fscanf(stream, formato, punteros);
}
size_t leidos = fread(&buffer, sizeof(buffer), nro, stream);
//Hay distintas alternativas para la condicion del ciclo
while (leidos != 0)
(leidos == nro)
{
// Procesar
leidos = fread(&buffer, sizeof(buffer), nro, stream);
}
Mezcla
FILE *stream_1 = fopen("archivo_1", "r");
FILE *stream_2 = fopen("archivo_2", "r");
FILE *mezcla = fopen("mezcla", "w");
buffer_t buffer_1;
buffer_t buffer_2;
size_t leidos_1 = fread(&buffer_1, sizeof(buffer_t), 1, stream_1);
size_t leidos_2 = fread(&buffer_2, sizeof(buffer_t), 1, stream_2);
while (leidos_1 == 1 && leidos_2 == 1)
{
if (buffer_1.clave <= buffer_2.clave)
{
fwrite(&buffer_1, sizeof(buffer_t), 1, mezcla);
leidos_1 = fread(&buffer_1, sizeof(buffer), 1, stream_1);
}
else
{
fwrite(&buffer_2, sizeof(buffer_t), 1, mezcla);
leidos_2 = fread(&buffer_2, sizeof(buffer), 1, stream_2);
}
}
while (leidos_1 == 1)
{
fwrite(&buffer_1, sizeof(buffer_t), 1, mezcla);
leidos_1 = fread(&buffer_1, sizeof(buffer), 1, stream_1);
}
while (leidos_2 == 1)
{
fwrite(&buffer_2, sizeof(buffer_t), 1, mezcla);
leidos_2 = fread(&buffer_2, sizeof(buffer), 1, stream_2);
}
Unión
FILE *stream_1 = fopen("archivo_1", "r");
FILE *stream_2 = fopen("archivo_2", "r");
FILE *union = fopen("union", "w");
buffer_t buffer_1;
buffer_t buffer_2;
size_t leidos_1 = fread(&buffer_1, sizeof(buffer_t), 1, stream_1);
size_t leidos_2 = fread(&buffer_2, sizeof(buffer_t), 1, stream_2);
while (leidos_1 == 1 && leidos_2 == 1)
{
if (buffer_1.clave < buffer_2.clave)
{
fwrite(&buffer_1, sizeof(buffer_t), 1, union);
leidos_1 = fread(&buffer_1, sizeof(buffer), 1, stream_1);
}
else if (buffer_1.clave > buffer_2.clave)
{
fwrite(&buffer_2, sizeof(buffer_t), 1, union);
leidos_2 = fread(&buffer_2, sizeof(buffer), 1, stream_2);
}
else
{
fwrite(&buffer_1, sizeof(buffer_t), 1, union);
leidos_1 = fread(&buffer_1, sizeof(buffer), 1, stream_1);
leidos_2 = fread(&buffer_2, sizeof(buffer), 1, stream_2);
}
}
while (leidos_1 == 1)
{
fwrite(&buffer_1, sizeof(buffer_t), 1, union);
leidos_1 = fread(&buffer_1, sizeof(buffer), 1, stream_1);
}
while (leidos_2 == 1)
{
fwrite(&buffer_2, sizeof(buffer_t), 1, union);
leidos_2 = fread(&buffer_2, sizeof(buffer), 1, stream_2);
}
Intersección
FILE *stream_1 = fopen("archivo_1", "r");
FILE *stream_2 = fopen("archivo_2", "r");
FILE *intersec= fopen("intersec", "w");
buffer_t buffer_1;
buffer_t buffer_2;
size_t leidos_1 = fread(&buffer_1, sizeof(buffer_t), 1, stream_1);
size_t leidos_2 = fread(&buffer_2, sizeof(buffer_t), 1, stream_2);
while (leidos_1 == 1 && leidos_2 == 1)
{
if (buffer_1.clave < buffer_2.clave)
{
leidos_1 = fread(&buffer_1, sizeof(buffer), 1, stream_1);
}
else if (buffer_1.clave > buffer_2.clave)
{
leidos_2 = fread(&buffer_2, sizeof(buffer), 1, stream_2);
}
else
{
fwrite(&buffer_1, sizeof(buffer_t), 1, intersec);
leidos_1 = fread(&buffer_1, sizeof(buffer), 1, stream_1);
leidos_2 = fread(&buffer_2, sizeof(buffer), 1, stream_2);
}
}
Diferencia
FILE *stream_1 = fopen("archivo_1", "r");
FILE *stream_2 = fopen("archivo_2", "r");
FILE *diferencia= fopen("diferencia", "w");
buffer_t buffer_1;
buffer_t buffer_2;
size_t leidos_1 = fread(&buffer_1, sizeof(buffer_t), 1, stream_1);
size_t leidos_2 = fread(&buffer_2, sizeof(buffer_t), 1, stream_2);
while (leidos_1 == 1 && leidos_2 == 1)
{
if (buffer_1.clave < buffer_2.clave)
{
fwrite(&buffer_1, sizeof(buffer_t), 1, diferencia);
leidos_1 = fread(&buffer_1, sizeof(buffer), 1, stream_1);
}
else if (buffer_1.clave > buffer_2.clave)
{
leidos_2 = fread(&buffer_2, sizeof(buffer), 1, stream_2);
}
else
{
leidos_1 = fread(&buffer_1, sizeof(buffer), 1, stream_1);
leidos_2 = fread(&buffer_2, sizeof(buffer), 1, stream_2);
}
}
while (leidos_1 == 1)
{
fwrite(&buffer_1, sizeof(buffer_t), 1, diferencia);
leidos_1 = fread(&buffer_1, sizeof(buffer), 1, stream_1);
}