c ++在内存中使用缓冲区而不是直接读取文件

时间:2012-02-23 15:07:50

标签: c++ string pointers fopen fread

我有这个代码可以正常工作:

FILE *fp;
fp = fopen(filename.c_str(), "rb");
char id[5];
fread(id,sizeof(char),4,fp);

现在我在我的架构中改变了一些东西,而文件名作为文件的完整路径我有一个包含文件数据的字符指针..所以我不需要阅读(fopen)等等..)但只读取char *缓冲区... 我怎样才能做到这一点? 提前谢谢

2 个答案:

答案 0 :(得分:1)

char id[5];
strncpy(id,bfr,4);
id[4]='\0';

其中bfr是包含文件数据的缓冲区。

还强烈建议您阅读K& R:C编程语言中关于指针和字符串的章节。

答案 1 :(得分:1)

如果我正确理解您的问题,您希望在缓冲区中间的某个位置访问四个字符的ID。最简单的方法是将数据复制到新缓冲区并添加NULL终止符。

size_t index = 0;
// ...
char id[5];
memcpy(id, &myData[index], 4);
id[4] = '\0';
index += 4;

然后,您可以通过每次阅读时更新索引值来顺序读取缓冲区。