Archivos, clase 5

Anuncio
Archivos, clase 5
Entrada formateada
• scanf(“%formato %formato ...”,pointer1,
pointer2, ...)
• Lee del teclado entradas separadas por
espacios. Convierte lo tecleado en valor
dependiendo del formato y graba el
resultado en la memoria donde apunta el
pointer.
• Los formatos son iguales a los de prontf
%d - integer, %f - float, %s - string, %c - char
Ejemplo
#include <stdio.h>
int main(void)
{
int a,b;
do {
scanf("%d %d", &a, &b);
printf("%3d %3d\n",a,b);
} while (a > 0);
}
#include <stdio.h>
int main(void)
{
int a,b;
char c;
char line[100];
while (gets(line)) {
sscanf(line,"%d %d", &a, &b);
printf("%3d %3d\n",a,b);
}
}
Archivos
• Los archivos están escritos en algún lugar
(disco, memory stick, ...)
• La interacción entre en programa y los datos
se realiza por el sistema operativo.
• Sintaxis FILE *nombre
• La conexión entre el pointer y los datos se
realiza con la función fopen.
sintaxis: fopen(nombre, tipo_de_acceso)
ejemplo: FILE *f = fopen(“blabla.dat”, “r”);
tipo_de_acceso: “r”-leer, “w”- escribir, “a”-agregar
Ejemplo: copiar un archivo en otro.
• #include <stdio.h>
• int main(int argc, char *argv[])
{
char line[100];
FILE *f = fopen(argv[1],”r”);
FILE *g = fopen(argv[2],”w”);
while (fgets(line,100,f)) {
fputs(line,g);
}
fclose(g);
fclose(f);
}
int main(int argc, char * argv[])
{
int i;
printf(“%d\n”,argc);
for (i=0; i<argc; i++) printf(“%s\n”,argv[i]);
}
Otro ejemplo
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *f = fopen(“random.dat”,”w”);
int i;
for (i =0; i< 10; i++) fprintf(f,"%d\n",rand());
fclose(f);
}
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *f = fopen(“random.dat”,”r”);
int i,n; char line[100];
n=0;
while(fgets(line,100,f)) n++; /* cuenta las lineas en el archivo */
fclose(f); f = fopen(“random.dat”,”r”);
int *x = calloc(n,sizeof(int));
for (i =0; i<n; i++) {
fscanf(f,"%d",&x[i]);
printf(“%d\n”,x[i]);
}
fclose(f);
}
Visualizar resultados, gnuplot
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *f = fopen("v2.dat","w");
int i; double base;
base = 2.0;
for (i=0; i<30; i++) base *= 2.0;
printf("%f\n", base);
for (i =0; i< 100; i++) fprintf(f,"%20.10f
%20.10f\n",random()/base,random()/base);
fclose(f);
}
gnuplot
• gnuplot
• > plot ‘nombre de archivo’
• > plot ‘nombre’ u 1:2, ‘nombre1’ u 3:6 w
l
Descargar