【发布时间】:2012-03-17 01:59:05
【问题描述】:
我试图将数据复制到一个全局结构内的一组结构内的无符号字符缓冲区中,但它以某种方式失败了。这就是我所拥有的:
#define MAX_FILES 12
#define SIZE 512
typedef struct bufDataType {
unsigned char buf[SIZE];
} bufData;
static struct {
int counter;
struct bufDataType myBufData[8];
} Table[MAX_FILES];
memset(Table, 0, sizeof(Table));
int loadData(int j) {
// This is a test buffer
unsigned char bufTest[SIZE];
Table[j].counter = 0;
for (int i = 0; i < 8; i++) {
loadIntoBuf(i,bufTest);
printf("This works %s\n", bufTest);
memcpy(Table[j].myBufData[i].buf, bufTest, SIZE);
printf("This is blank %s\n", Table[j].myBufData[i].buf);
loadIntoBuf(i,Table[j].myBufData[i].buf);
printf("This is blank as well %s\n", Table[j].myBufData[i].buf);
}
}
是不是因为我限制了Table中的struct元素的数量?
【问题讨论】:
-
缺少某些代码。什么是 loadIntoBuf?什么是 DISKIMG_SECTOR_SIZE? MAX_FILES 个?尺寸?
-
loadIntoBuf 的代码在哪里?
-
它本质上是一个文件磁盘加载,它从文件磁盘读取并存储到缓冲区中。 loadIntoBuf 的参数是
int sector, void *buf,如果有帮助的话。 -
我编辑了一些东西来澄清一下。
-
假设
j < 12,我看不出您发布的代码有任何明显错误。memcpy和loadIntoBuf方法都应该有效。您能否详细说明您所看到的故障类型?