我试图读取包含82503x1200矩阵中的双格式化数字的文件。我正在阅读文件,但没有找到指定lseek正在使用的号码大小的方法。为什么给我那个数字而不是文件号?C++:lseek给予原始文件不同的值:
float fd;
float ret;
float b;
const size_t NUM_ELEMS = 11;
const size_t NUM_BYTES = NUM_ELEMS * sizeof(float);
fd = open("signal_80k.txt",O_RDONLY);
if(fd < 0){
perror("open");
//exit(1);
}
ret = lseek(fd, seekCounter*NUM_BYTES, SEEK_SET);
ret = read(fd, &b, sizeof(float));
cout<<"> " << seekCounter << ": " << b<<endl;
seekCounter++;
close(fd);
它打印:
0:1.02564e-08 1:1.08604e-05 2:0.000174702 3:6.56482e-07 4:2.57894e-09
但前值: 9.402433000000000e 8.459109000000000e 8.947654000000000e + 03 9.021620000000000e
这是它的外观在MATLAB
你的代码看起来像你正在阅读的二进制数据,但你的文件扩展名是TXT这表明它是文本数据。 – Daniel
嗨丹尼尔,是的,它是文本数据...这意味着lseek不是正确的方法? – Dazzid
你的文本文件是怎样的? – Daniel