Por qué se me llena la pantalla de basura??
Publicado por BondJames Bond (4 intervenciones) el 26/09/2007 23:07:20
Por qué al ejecutar este programa se me llena la pantalla de caracteres basura???
#include<fcntl.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<signal.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
void error (char *m) {
write(2,m,strlen(m));
write(2,"\n",1);
write(2,strerror(errno),strlen(strerror(errno)));
exit(1);
}
int main() {
int data1, data2, resultado, dato1, dato2,resul, contamulti;
long index1, index2;
if ((data1 = open("data1.dat",O_RDONLY)) < 0)
error("Fallo al abrir data1.dat");
if ((data2= open("data2.dat",O_RDONLY)) < 0)
error("Fallo al abrir data2.dat");
if ((resultado= open("resultado.dat",O_WRONLY|O_CREAT,0600)) < 0) /*contendrá la multiplicación de los registros */
/*de data1 y data2*/
error("Fallo al crear resultado.dat");
index1=lseek(data1,1,SEEK_SET); /*me posiciono al principio del primer fichero*/
read(data1,&dato1,sizeof(dato1));
index1 ++; /*avanzo al siguiente registro*/
index2 = lseek(data2,0,SEEK_END); /*me posiciono al final del segundo fichero para leerlo al revés*/
read(data2,&dato2,sizeof(dato2));
index2 --; /*retrocedo al siguiente registro*/
while ((index1 >=1) && (index2 >=0)) {
resul = dato1*dato2; /*multiplico los registros leídos*/
contamulti ++; /*cuento las multiplicaciones realizadas*/
write(resultado,&resul,sizeof(resul));
read(data1,&dato1,sizeof(dato1));
index1 ++;
read(data2,&dato2,sizeof(dato2));
index2 --;
}
write(2,"El número de multiplicaciones es: ",contamulti);
close(data1);
close(data2);
close(resultado);
}
Muchas gracias de antemano!!!!
#include<fcntl.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<signal.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
void error (char *m) {
write(2,m,strlen(m));
write(2,"\n",1);
write(2,strerror(errno),strlen(strerror(errno)));
exit(1);
}
int main() {
int data1, data2, resultado, dato1, dato2,resul, contamulti;
long index1, index2;
if ((data1 = open("data1.dat",O_RDONLY)) < 0)
error("Fallo al abrir data1.dat");
if ((data2= open("data2.dat",O_RDONLY)) < 0)
error("Fallo al abrir data2.dat");
if ((resultado= open("resultado.dat",O_WRONLY|O_CREAT,0600)) < 0) /*contendrá la multiplicación de los registros */
/*de data1 y data2*/
error("Fallo al crear resultado.dat");
index1=lseek(data1,1,SEEK_SET); /*me posiciono al principio del primer fichero*/
read(data1,&dato1,sizeof(dato1));
index1 ++; /*avanzo al siguiente registro*/
index2 = lseek(data2,0,SEEK_END); /*me posiciono al final del segundo fichero para leerlo al revés*/
read(data2,&dato2,sizeof(dato2));
index2 --; /*retrocedo al siguiente registro*/
while ((index1 >=1) && (index2 >=0)) {
resul = dato1*dato2; /*multiplico los registros leídos*/
contamulti ++; /*cuento las multiplicaciones realizadas*/
write(resultado,&resul,sizeof(resul));
read(data1,&dato1,sizeof(dato1));
index1 ++;
read(data2,&dato2,sizeof(dato2));
index2 --;
}
write(2,"El número de multiplicaciones es: ",contamulti);
close(data1);
close(data2);
close(resultado);
}
Muchas gracias de antemano!!!!
Valora esta pregunta
0